/*
也可以和 Q623: 500! 一樣用二維的ARRAY
但這題只要SUM不要階層的值
所以 arr 可以一直用
如果用二維會太浪費空間
Run time: 0.030
*/
#include <stdio.h>
#define LEN 2600
#define N 1000
int arr[LEN];
int len[N+1];
void calculate();
int main()
{
int n;
int i;
int sum;
calculate();
while (scanf("%d", &n) != EOF)
{
printf("%d\n", len[n]);
}
return 0;
}
void calculate()
{
int i, j;
arr[0] = 1;
len[0] = 1, len[1] = 1;
for ( i = 1; i <= N; i++)
{
for ( j = 0; j < LEN; j++)
arr[j] *= i;
for ( j = 0; j < LEN; j++)
{
// to calculate carry
if (arr[j] >= 10)
{
arr[j+1] += arr[j]/10;
arr[j] %= 10;
}
}
for ( j = 0; j < LEN; j++)
len[i] += arr[j];
}
}
沒有留言:
張貼留言