Notice
Recent Posts
Link
정화 코딩
[C++] 소수의 연속합 (백준 1644번) 본문
https://www.acmicpc.net/problem/1644
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int num = 4000001;
vector<bool> p(num, 1);
p[0] = p[1] = 0;
int sqnum = sqrt(num);
for (int i = 2; i <= sqnum; i++) {
if (p[i]) {
for (int j = i * i; j <= num; j += i) {
p[j] = 0;
}
}
}
vector<int> prime; // 소수 배열
prime.push_back(0);
for (int i = 1; i < num; i++) {
if (p[i]) prime.push_back(i);
}
int pn = prime.size();
vector<int> dp(pn, 0); // 부분합 배열
for (int i = 1; i < pn; i++) {
dp[i] = dp[i - 1] + prime[i];
}
int n;
cin >> n;
int cnt = 0;
int l = 0;
int r = 0;
while (l <= r && r < pn) {
if (dp[r] - dp[l] == n) {
cnt++;
r++;
} else if (dp[r] - dp[l] > n) {
l++;
} else {
r++;
}
}
cout << cnt << '\n';
}
(AC)
'PS' 카테고리의 다른 글
[C++] 본대 산책 2 (백준 12850번) (0) | 2025.07.06 |
---|---|
[C++] 전깃줄 - 2 (백준 2568번) (0) | 2025.07.06 |
[C++] 행성 터널 (백준 2887번) (0) | 2025.07.04 |
[C++] 팰린드롬 분할 (백준 1509번) (0) | 2025.06.27 |
[C++] 카드 게임 (백준 16566번) (2) | 2025.06.23 |
Comments