for 文の練習問題。
問題概要
長さ の整数列
が与えられる。
この数列の 番目の要素の直後に値
を挿入して得られる数列を出力せよ。
解法 (1):関数 erase() を利用する
C++ では、vector 型変数 A に対して、 番目に値
を挿入する処理は
A.insert(A.begin() + K, X);
と書ける。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, K, X; cin >> N >> K >> X; vector<int> A(N); for (int i = 0; i < N; ++i) cin >> A[i]; A.insert(A.begin() + K, X); for (int i = 0; i < N + 1; ++i) cout << A[i] << " "; cout << endl; }
解法 (2):for 文でなんとかする
次のようにすることも考えられる。
- 数列
の先頭から
個を出力する
- 値
を出力する
- 数列
の残りの要素を出力する
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, K, X; cin >> N >> K >> X; vector<int> A(N); for (int i = 0; i < N; ++i) cin >> A[i]; for (int i = 0; i < K; ++i) cout << A[i] << " "; cout << X << " "; for (int i = K; i < N; ++i) cout << A[i] << " "; cout << endl; }