二重の for
文に慣れよう!
問題概要
長さが の数列 と、長さが の数列 が与えられる。
を満たすような組 (, ) の個数を求めよ。
制約
考えたこと
この問題に限らず、2 つの数列からそれぞれ要素 をとってきて、それが条件を満たすかどうかを調べていく処理は、次のように二重の for
文で書けます。
for (int p = 0; p < N; ++p) { for (int q = 0; q < M; ++q) { // A[p] と B[q] について調べる } }
今回の問題も、同様の二重の for
文で解けます。
コード
#include <bits/stdc++.h> using namespace std; int main() { int K, N, M; cin >> K >> N; vector<int> A(N); for (int i = 0; i < N; ++i) cin >> A[i]; cin >> M; vector<int> B(M); for (int i = 0; i < M; ++i) cin >> B[i]; int res = 0; for (int p = 0; p < N; ++p) { for (int q = 0; q < M; ++q) { if (A[p] + K == B[q]) ++res; } } cout << res << endl; }