トップページに戻る
次のC++のサンプルへ
前のC++のサンプルへ
Problem20 100の階乗の各桁の合計
問題
n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。
100! の各桁の数字の合計を求めよ。
ソース
#include <iostream>
#include <numeric>
void main()
{
int IntArr[9999] = {0};
IntArr[0] = 1;
const int UB = sizeof(IntArr)/sizeof(int)-1;
for (int I = 1; I <= 100; I++) {
for (int J = 0; J <= UB; J++) {
IntArr[J] *= I;
}
for (int J = 0; J <= UB-1; J++) {
if (IntArr[J] >= 10) {
IntArr[J + 1] += IntArr[J] / 10;
IntArr[J] %= 10;
}
}
}
std::cout << std::accumulate(IntArr,IntArr+UB+1,0) << std::endl;
}
実行結果
648
解説
intの配列で大きい桁の変数を代用してます。