Project Euler:Problem 20 Factorial digit sum

来源:互联网 发布:畅想软件开发有限公司 编辑:程序博客网 时间:2024/05/21 17:05

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


0 0
原创粉丝点击