工学1号馆

home

« | 返回首页 | »

Project Euler 20–Factorial digit sum

By Wu Yudong on August 12, 2018

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!

题目大意:

n! = n × (n − 1) × … × 3 × 2 × 1

例如,10! = 10 × 9 × … × 3 × 2 × 1 = 3628800, 那么10!的各位之和就是3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

算出100!的各位之和。

#include <stdio.h>
#include <math.h>
#define N 100

int main(void)
{
	int n = N * log(N / 3), a[n], ca = 0, i, j;
	for (i = 0; i < n; i++)
		a[i] = 0;
	a[n - 1] = 1;
	for (i = 1; i <= N; i++) {
		for (j = n - 1; j >= 0; j--) {
			ca = i * a[j] + ca;
			a[j] = ca % 10;
			ca /= 10;
		}
		ca = 0;
	}
	ca = 0;
	for (i = 0; i < n; i++)
		ca += a[i];
	printf("%d\n", ca);
	return 0;
}

Answer:648
Completed on Sun, 13 Apr 2014, 02:47

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)