首页 > 其他 > 详细

Project Euler:Problem 20 Factorial digit sum

时间:2015-05-31 15:22:23      阅读:295      评论:0      收藏:0      [点我收藏+]

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;
}


Project Euler:Problem 20 Factorial digit sum

原文:http://blog.csdn.net/youb11/article/details/46288747

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!