정수 분할 문제

사실 이건 뭐라 하기도 힘들다.

문제를 직접 보자

http://projecteuler.net/index.php?section=problems&id=207

이 블로그 어딘가에 이 문제에 대한 상세한 해설이 적혀 있을 것이다.

#include

#include

#define YES 1

#define NO 0

int isPowerOfTwo(int);

int main(){

int n=1;

int q=0;

int m;

while(1){

m=n*(n+1);

if(isPowerOfTwo(n+1)==YES){

q++;

printf(“q=%u, n=%u, m=%u, p(m)=%lf\n”,q,n, m, ((double)q/(double)n));

}

if(((double)q/(double)n)<1.0/12345.0){
printf(“last, q=%u, n=%u, m=%u, p(m)=%lf\n”,q,n, m, ((double)q/(double)n));

exit(0);

}

n++;

}

return 1;

}

int isPowerOfTwo(int p){

while(p-1){

if(p%2!=0){

return NO;

}

p=p/2;

}

return YES;

}

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.