Problem 20 「階乗の数字和」 †
n × (n - 1) × ... × 3 × 2 × 1 を n! と表す.
例えば, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 となる.
この数の各桁の合計は 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 である.
では, 100! の各桁の数字の和を求めよ.
解法
そのまま階乗を計算して、各桁の和をketaSumで取り出す。
何も工夫してません。
fact(0,1):-!.
fact(N,Result):-
N1 is N-1,
fact(N1,Re),
Result is Re*N.
ketaSum(0,0):-!.
ketaSum(Num,Result):-
Num1 is Num//10,
Add is Num mod 10,
ketaSum(Num1,Re),
Result is Re+Add.
main20:-
fact(100,Num),
ketaSum(Num,Ans),
write(Ans).
最終更新:2014年02月13日 17:14