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