如果n很大怎么办呢?比如n=1000
一切都是那么美好!比尼采还想象得深远!比幻觉还真实!
自己编了一个,可以精确的求出1!+2!+...+1000!的值,...其实可以求出任意大数的值的...可惜数组长度有限呀
#include"math.h"
#include"conio.h"
#define N1 10000
int sum[N1],sv[N1];
main()
{int i,j,n;
clrscr();
printf("Please Input n=");
scanf("%d",&n);
for(i=0;i<N1;i++)
{sum[i]=0;sv[i]=0;}
sv[0]=1;
for(i=1;i<=n;i++)
nj(i);
printf("\n1!");
for(j=2;j<=n;j++)
printf("+%d!",j);
printf("=");
for(i=N1-1;i>=0;i--)
if(sum[i]>0) break;
for(j=i;j>=0;j--)
printf("%d",sum[j]);
getch();
}
nj(int n)
{int wz,yxw,i,j,k,dd;
int a[N1];
for(i=0;i<N1;i++)
a[i]=sv[i];
for(j=N1-1;j>=0;j--)
if(a[j]>0) {yxw=j;break;}
dd=0;
for(k=0;k<=yxw;k++)
{wz=a[k]*n+dd;
a[k]=wz%10;
dd=wz/10;
}
while(dd>0)
{a[k++]=dd%10;
dd=dd/10;
}
dd=0;
for(i=0;i<k;i++)
{wz=a[i]+sum[i]+dd;
sum[i]=wz%10;
dd=dd/10;
}
while(dd>0)
{wz=sum[i]+dd;
sum[i]=wz%10;
dd=wz/10;
i++;
}
for(i=0;i<N1;i++)
sv[i]=a[i];
}