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



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