您的位置:首页 > 其它

Project Euler:Problem 20 Factorial digit sum

2015-05-31 15:05 375 查看
n! means n × (n − 1) × ... × 3 × 2 × 1
For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,

and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Find the sum of the digits in the number 100!

#include <iostream>
#include <string>
using namespace std;

string int_str(int a)
{
	string s = "";
	while (a != 0)
	{
		int tp = a % 10;
		char p = tp + '0';
		s = p + s;
		a = a / 10;
	}
	return s;
}

int main()
{
	string s = "1";
	for (int i = 2; i <= 100; i++)
	{
		int len = s.length();
		int flag = 0;
		for (int j = len - 1; j >= 0; j--)
		{
			int tp = (s[j] - '0')*i + flag;
			s[j] = tp % 10+'0';
			flag = tp / 10;
		}
		if (flag != 0)
			s = int_str(flag) + s;
		//cout << s << endl;
	}
	int len = s.length();
	int res = 0;
	for (int i = 0; i < len; i++)
		res += s[i] - '0';
	cout << res << endl;
	system("pause");
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: