20251119 baekjoon
This commit is contained in:
parent
ea8ee29090
commit
3cb8f2e915
45
code_study/Baekjoon/c/1644.c
Normal file
45
code_study/Baekjoon/c/1644.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int N;
|
||||||
|
scanf("%d",&N);
|
||||||
|
|
||||||
|
bool* isPrime = (bool*)malloc(sizeof(bool)*(N+1));
|
||||||
|
|
||||||
|
for(int i=0; i<=N; i++) isPrime[i] = (i==0 || i==1) ? false : true;
|
||||||
|
|
||||||
|
for(int i=2; i*i<=N; i++) {
|
||||||
|
if(isPrime[i]) {
|
||||||
|
for(int j=i*i; j<=N; j+=i) {
|
||||||
|
isPrime[j] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int prime_count = 0;
|
||||||
|
for(int i=0; i<=N; i++) if(isPrime[i]) prime_count++;
|
||||||
|
int* primes = (int*)malloc(sizeof(int)*(prime_count));
|
||||||
|
int idx=0;
|
||||||
|
for(int i=2; i<=N; i++) if(isPrime[i]) primes[idx++] = i;
|
||||||
|
|
||||||
|
int start = 0, end = 0;
|
||||||
|
int current_sum = 0;
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
while(start < prime_count) {
|
||||||
|
while(end < prime_count && current_sum < N) current_sum += primes[end++];
|
||||||
|
|
||||||
|
if(current_sum == N) result++;
|
||||||
|
|
||||||
|
current_sum -= primes[start++];
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d\n",result);
|
||||||
|
|
||||||
|
free(isPrime);
|
||||||
|
free(primes);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user