※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


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).