码迷,mamicode.com
首页 > 其他好文 > 详细

Project Euler:Problem 20 Factorial digit sum

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

标签:c++   project euler   

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

标签:c++   project euler   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!