글
사실 이건 뭐라 하기도 힘들다.
문제를 직접 보자
http://projecteuler.net/index.php?section=problems&id=207
이 블로그 어딘가에 이 문제에 대한 상세한 해설이 적혀 있을 것이다.
#include<stdio.h>
#include<stdlib.h>
#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;
}
문제를 직접 보자
http://projecteuler.net/index.php?section=problems&id=207
이 블로그 어딘가에 이 문제에 대한 상세한 해설이 적혀 있을 것이다.
#include<stdio.h>
#include<stdlib.h>
#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;
}
RECENT COMMENT