반응형
-문제
-코드
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
int n, cnt=0, p1 = 0, p2 = 0, sum = 0;
scanf("%d", &n);
vector<int> a;
vector<int> check(n+1);
// 에라토스테네스의 체
for (int i = 2; i*i <= n; i++)
{
if (check[i] == 1) continue;
for (int j = 2 * i; j <= n; j += i)
{
check[j] = 1;
}
}
for (int i = 2; i <= n; i++)
{
if (check[i] == 0)
{
a.push_back(i);
}
}
while (1)
{
if (sum < n)
{
if (p2 >= a.size()) break;
sum += a[p2];
p2++;
}
else if(sum == n)
{
cnt++;
if (p2 >= a.size()) break;
sum += a[p2];
p2++;
}
else
{
sum -= a[p1];
p1++;
}
}
printf("%d", cnt);
return 0;
}
반응형
'이론 > 코딩테스트' 카테고리의 다른 글
[백준] 3273번 두 수의 합 (투포인터 알고리즘) (0) | 2022.07.29 |
---|---|
[백준] 11728번 배열 합치기 (투포인터 알고리즘) (0) | 2022.07.29 |
[백준] 1806번 부분합 (투포인터 알고리즘) (0) | 2022.07.29 |
[백준] 2003번 수들의 합 2 (투포인터 알고리즘) (0) | 2022.07.29 |
[백준] 11724번 연결 요소의 개수 (DFS) (0) | 2022.07.28 |