結果
問題 | No.826 連絡網 |
ユーザー |
![]() |
提出日時 | 2019-05-05 06:44:17 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 661 bytes |
コンパイル時間 | 136 ms |
コンパイル使用メモリ | 31,744 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-24 02:35:29 |
合計ジャッジ時間 | 1,066 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 30 |
ソースコード
// yukicoder: No.826 連絡網 // 2019.5.5 bal4u #include <stdio.h> #include <math.h> #define MAX 1000005 char notPrime[MAX] = { 1,1,0,0,1 }; // zero: if prime void sieve(int n) { int i, j, b; b = (int)sqrt((double)n); for (i = 3; i <= b; i += 2) { if (!notPrime[i]) { for (j = i * i; j <= n; j += i) notPrime[j] = 1; } } } int main() { int i, k, N, P, ans; scanf("%d%d", &N, &P); if (P == 1) { puts("1"); return 0; } sieve(N); i = 1 + (N>>1); if (!(i & 1)) i++; ans = 0, k = i; while (i <= N) { if (!notPrime[i]) ans++; i += 2; } if ((P & 1) && P >= k && !notPrime[P]) puts("1"); else printf("%d\n", N - ans - 1); return 0; }