#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> numbers;
numbers.push_back( 1 );
for ( int i = 2; i <= 100; ++i )
{
for ( size_t k = 0; k < numbers.size(); ++k )
{
numbers[k] *= i;
}
for ( size_t k = 0; k < numbers.size() - 1; ++k )
{
numbers[k+1] += numbers[k] / 10;
numbers[k] %= 10;
}
while ( numbers.back() >= 10 )
{
int tmp = numbers.back() / 10;
numbers.back() %= 10;
numbers.push_back( tmp );
}
}
cout << accumulate( numbers.begin(), numbers.end(), 0 ) << endl;
return 0;
}
http://projecteuler.net/problem=20 [Answer:648]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.