#include<stdio.h>
#define M 1000
int a[M]={0},b[M]={0},n,i,j;
int main()
{
a[0]=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<M;j++)
a[j]*=i;
//进位
for(j=0;j<M-1;j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
for(j=0;j<M;j++)
b[j]+=a[j];
for(j=0;j<M-1;j++)
if(b[j]>9)
{
b[j+1]+=b[j]/10;
b[j]%=10;
}
}
for(i=M-1;i>=0&&b[i]==0;i--);
if(i>=0)
for(;i>=0;i--)
printf("%d",b[i]);
else
printf("0");
return 0;
}
高精度解洛谷阶乘之和
最新推荐文章于 2024-05-07 14:56:58 发布