C/C++の宿題片付けます 127代目
■ このスレッドは過去ログ倉庫に格納されています
0296デフォルトの名無しさん
2009/06/13(土) 20:32:300^0 を 1 とするか 0 とするか、はたまた無効とするかそれが問題だ
#include<stdio.h>
#include<time.h>
unsigned long f(unsigned long x){
unsigned long ret=0;
do{
switch(x%10){
case 0: ret+=0; break; // 0 の 0 乗はいくつ?
case 1: ret+=1; break;
case 2: ret+=2*2; break;
case 3: ret+=3*3*3; break;
case 4: ret+=4*4*4*4; break;
case 5: ret+=5*5*5*5*5; break;
case 6: ret+=6*6*6*6*6*6; break;
case 7: ret+=7*7*7*7*7*7*7; break;
case 8: ret+=8*8*8*8*8*8*8*8; break;
case 9: ret+=9*9*9*9*9*9*9*9*9; break; // このへんはコンパイル時に予め計算されるはず
}
}while((x/=10)>0);
return ret;
}
int main(void){
unsigned long i;
clock_t s=clock();
for(i=0;i<=3874204890;i++){
if(i%1000000==0) fprintf(stderr, " %lu \r", i);
if(i==f(i)) printf("f(%lu)=%lu %.2f[sec]\n", i, i, (double)(clock()-s)/CLOCKS_PER_SEC);
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています