阶乘

题目描述

用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。

输入格式

一个正整数N。

输出格式

一个正整数S,表示计算结果。

样例输入 

3

样例输出 

9
//标程:
#include
#include
int a[55][50];
void f()
{
    a[1][0]=1;
int i,j,k;
for(i=2;i<=50;i++)
{
for(j=0;j<=40;j++)
a[i][j]=a[i-1][j]*i;
for(j=0;j<=20;j++)
{
a[i][j+1]+=a[i][j]/1000;
a[i][j]%=1000;
}
}
  for(i=2;i<50;i++)
{
for(j=0;j<=40;j++)
a[i][j]+=a[i-1][j];
for(j=0;j<=30;j++)
{
a[i][j+1]+=a[i][j]/1000;
a[i][j]%=1000;
}

}
int main()
{
         int n,i,j;   
memset(a,0,sizeof(a));
         f();
while(scanf("%d",&n)!=EOF)
{
for(i=30;i>=0;i--)
if(a[n][i]!=0)  break;
for(j=i;j>=0;j--)
if(j==i) printf("%d",a[n][i]); 
else  printf("%03d",a[n][j]);
printf("\n");
}
return 0;
}

你可能感兴趣的:(大数)