2011/02/02

自然数をn乗して得られるn桁の正整数は何個あるか?

Project Eular Problem63

5桁の数 16807 = 75は自然数を5乗した数である. 同様に9桁の数 134217728 = 89も自然数を9乗した数である.
自然数をn乗して得られるn桁の正整数は何個あるか?
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2063

nは10-Ceiling[10^((n - 1)/n)]>=1
を満たすn=21までカウントすればおk(2項目は増加関数)。


  1. int main (int argc, const char * argv[]) {  
  2.      
  3.  double count=0;  
  4.  for(double n=1;n<=21;n++){  
  5.     
  6.   count=count+ceil(10)-ceil(pow(10,(n-1)/n));   
  7.     
  8.  }  
  9.    
  10.  printf("%f",count);  
  11.    
  12. }   


コレの原文(英語)読みながらやったら少しは英語力wがマシになるのかなーと、思いつつ、日本語約を先に読むと英文を読む気にならない。。。。