Problem 63 「べき乗の桁の個数」 †
5桁の数 16807 = 75は自然数を5乗した数である. 同様に9桁の数 134217728 = 89も自然数を9乗した数である.
自然数を n 乗して得られる n 桁の正整数は何個あるか?
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2063
解法
10以上の数は桁の増加がnの増加より大きくなります。
10以下の数はいつかは桁の増加に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).
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).
0 件のコメント:
コメントを投稿