プロジェクトオイラー問63

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をそこにとれば
log(10)=1で2桁からスタートで常に10^nはn桁より多い。
よって1~9だけがこの問いの条件を満たす。
1~9は10を底にとればlogは1以下となるので、n=1は条件を満たす。
n桁よりも増加スピードが遅いのでnが条件を満たさくなくなるところまで探せばよい。
後は探索するだけです。


check(N,R,_):-
	N>R,!,fail.
check(_,_,_).
check(N,R,E):-
 	N1 is N*10,
	R1 is R*E,
	check(N1,R1,E).

search(E):-
	between(1,9,E),
	check(1,E,E).
main:-
	findall(E,search(E),Es),
	length(Es,Ans),
	write(Ans).
最終更新:2014年12月12日 02:47