https://www.acmicpc.net/problem/1644
1. 의사코드 및 전체코드
// Authored by : BaaaaaaaaaaarkingDog
// Co-authored by : -
// http://boj.kr/ecc7d7f58ceb4679a1bb67adbb79088c
#include <bits/stdc++.h>
using namespace std;
const int MXN = 4000002;
vector<bool> seive(MXN, true);//1.모두소수라고 가정
vector<int> primes;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 2; i * i < MXN; ++i) {
if (!seive[i]) continue;//소수가아니면 pass
for (int j = i * i; j < MXN; j += i)//소수들의 배수는 소수가아님
seive[j] = false;
}
for (int i = 2; i < MXN; ++i) if (seive[i]) primes.push_back(i);
primes.push_back(0);
// 2 3 5 7 0 일때, 끝에 0이 있어야 7을 탐색후 e가 0을 가르킴.
int target, s = 0, e = 1, ans = 0, tmpSum = primes[0];
cin >> target;
while (1) {
if (tmpSum == target) ans++;
if (tmpSum <= target) tmpSum += primes[e++]; //end를 한칸뒤로
if (tmpSum > target)tmpSum -= primes[s++]; //start를 한칸뒤로
if (e == primes.size()) break;
}
cout << ans;
}
'Algorithm > 투포인터' 카테고리의 다른 글
백준 22862 c++ // 투포인터 응용방법(db 이용) (0) | 2023.11.17 |
---|---|
백준 13144 List Of Unique Numbers c++ // 투포인터, 배열활용 (0) | 2023.11.14 |
백준 2003 수들의합2 c++ // 투포인터 정석풀이 (0) | 2023.11.13 |
백준 1806 부분합 c++ // 투포인터, 누적합 구현방법 (0) | 2023.11.06 |
백준 2230 수고르기 c++ // 투포인터 사용방법 (0) | 2023.11.06 |