for
文を工夫しよう
問題概要
長さ の数列 が与えられる。
この数列の末尾の 個の要素を順序を保ったまま先頭に持ってきて得られる数列を出力せよ。
制約
考えたこと
次のように考え直すとよい。なお、0-indexed で考えている。
数列の 番目からスタートして、数列 を順番に一周して出力する。
なお、末尾の要素 の次の要素は であると考えることにする。
このように数列を周回する処理は、下のコードのように、演算子「%
」を用いて表現できる。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, K; cin >> N >> K; vector<int> A(N); for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < N; i++) { // i = 0 のとき(最初の要素)は A[N - K] である cout << A[(i + (N - K)) % N] << " "; } cout << endl; }