1. 程式人生 > >nyoj 28 大數階乘

nyoj 28 大數階乘

描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?
輸入
輸入一個整數m(0<m<=5000)
輸出
輸出m的階乘,並在輸出結束之後輸入一個換行符
樣例輸入
50
樣例輸出
30414093201713378043612608166064768844377641568960512000000000000
#include <stdio.h>
#include <string.h>
#define MAX 20000


int main()
{
int s[MAX] = {1};
int num, i, j;
scanf("%d", &num);
for(i = 2; i <= num; i++)
{
for(j = 0; j < MAX; j++)
s[j] = s[j] * i;
for(j = 0; j < MAX; j++)
{
s[j + 1] += s[j] / 10;
s[j] = s[j] % 10;
}
}
for(i = MAX - 1; s[i] == 0; i--);
for(; i >= 0; i--)
printf("%d", s[i]);
printf("\n");
return 0;
}