はまやんはまやんはまやん

hamayanhamayan's blog

Five, Five Everywhere [AtCoder Beginner Contest 096 D]

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");
}