#include<stdio.h> #include<algorithm> using namespace std; const int MAX_N = 4e6; typedef long long ll; int n, ck[MAX_N + 1], pcnt, res; ll p[MAX_N + 1]; int main() { for (int i = 2; i <= MAX_N; i++) { if (ck[i]) continue; p[++pcnt] = i; p[pcnt] += p[pcnt - 1]; for (int j = i; j <= MAX_N; j += i) ck[j] = 1; } scanf("%d", &n); for (int i = 0; i < pcnt; i++) { int h = lower_bound(p + 1, p + 1 + pcnt, p[i] + n) - p; res += h != pcnt + 1 && p[h] == p[i] + n; } printf("%d", res); return 0; }
1644번: 소수의 연속합
https://www.acmicpc.net/problem/1644
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기