「プロジェクトオイラー問63」の編集履歴(バックアップ)一覧に戻る

プロジェクトオイラー問63 - (2014/02/21 (金) 16:00:08) のソース

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2063

*Problem 63 「べき乗の桁の個数」 †
5桁の数 16807 = 7^5は自然数を5乗した数である. 同様に9桁の数 134217728 = 8^9も自然数を9乗した数である.

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


10^2は3桁10^3は4桁。
10よりも大きな数は桁数の増加のほうがnの増加より早いので答えは10以下の数のn乗です。
またa^nの桁数がnより小さくなったらそれ以後桁数はnに追いつきません。
よって答えは狭い範囲に定まります。
logを使えば計算は簡単です。


 sum([],0):-!.
 sum([X|Xs],Result):-sum(Xs,Re),Result is Re+X.
 
 search(B):-
 	between(1,9,A),
 	B is floor(1/(1-log10(A))).
 main63:-
 	findall(N,search(N),AnsList),
 	sum(AnsList,Ans),
 	write(Ans).