とりあえず、doubleにぶっ込んでみる。
計測誤差が発生したのでアウトでした。
/*----------------------------------------------------->
project Euler
Problem 20
n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。
100! の各桁の数字の合計を求めよ。
------------------------------------------------------->*/
#include<iostream>
#include<cmath>
#define NUM 10
using namespace std;
int main(){
double factorial = 1 ; //階乗値
int number; //桁数
int sum = 0 ; //合計値
for( int i = NUM; i > 1 ; i--){
factorial *= i;
while( factorial >= 10 ) factorial /= 10 ;
}//next i
while( factorial ){
number = (int)floor( factorial );
sum += number;
factorial = ( factorial - number ) *10;
cout << "\nsum:" << sum << "\tfactorial\t" << factorial;
}
cout << "Answer is " << sum;
getchar();
return 0;
}