Problem 56 「もっとべき乗の数字和」 †
a^b(a<100,b<100)な自然数の桁の数字和の最大値を求めよ。
全探索で終了です。
sum(0,Sum,Sum):-!.
sum(Num,Sum,Result):-
Num1 is Num//10,
Sum1 is Sum+(Num mod 10),
sum(Num1,Sum1,Result).
main:-
findall(E,
(between(1,99,A),between(1,99,B),C is A^B,sum(C,0,E)),
Es),
sort(Es,Es1),
reverse(Es1,[Ans|_]),
write(Ans).