結果

問題 No.826 連絡網
ユーザー Pachicobue
提出日時 2019-04-23 15:20:03
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 10 ms / 2,000 ms
コード長 739 bytes
コンパイル時間 675 ms
コンパイル使用メモリ 72,176 KB
最終ジャッジ日時 2025-01-07 02:50:46
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <cassert>
int main()
{
    int N, P;
    std::cin >> N >> P;
    assert(1 <= N and N <= 1000000);
    assert(1 <= P and P <= N);
    std::vector<bool> isPrime(N + 1, true);
    isPrime[0] = isPrime[1] = false;
    for (int i = 2; i <= N; i++) {
        if (not isPrime[i]) { continue; }
        for (int j = 2; i * j <= N; j++) {
            isPrime[i * j] = false;
        }
    }
    int isolated = 1;
    for (int i = N; i * 2 > N; i--) {
        if (isPrime[i]) { isolated++; }
    }
    const bool solitude = P == 1 or (P * 2 > N and isPrime[P]);
    if (solitude) {
        std::cout << 1 << std::endl;
    } else {
        std::cout << N - isolated << std::endl;
    }
    return 0;
}
0