https://abc096.contest.atcoder.jp/tasks/abc096_d
考察
1. 400点で構築はパターンを見つけるまでが仕事な印象がある
2. どの異なる5つを選んで足すと合成数となる、なるべく分かりやすいパターンを探してみる
3. すると5で割った余りが等しい数を集めていれば、和が5の倍数となる
4. 実験で55555以下の素数で5で割った余りの数を全列挙してみると、余りが1,2,3,4な数は沢山あった
5. 素数で余りが1な数をN個出力すればよさそうだ
解法
https://abc096.contest.atcoder.jp/submissions/2471216
55555以下の素数で5で割った余りが1な数をN個出力すると答え。
int N; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; vector<int> v[5]; rep(i, 2, 55556) if (isprime(i)) v[i % 5].push_back(i); rep(i, 0, N) { if (i) printf(" "); printf("%d", v[1][i]); } printf("\n"); }