1到20的阶乘求和
发布网友
发布时间:2023-12-30 07:34
我来回答
共2个回答
热心网友
时间:2024-11-10 01:27
求20!,int和double都无法精确表示。我写的这个有点复杂,可以参考一下。
#include<stdio.h>
int mul(int arr[],int n,int len)
{
int i,c=0;
for (i=0; i<len; i++)
{
arr[i]=arr[i]*n+c;
c=arr[i]/10;
arr[i]%=10;
}
while (c!=0)
{
arr[i++]=c%10;
c/=10;
}
return i;
}
int add(int a[],int n,int b[],int m)
{
int i,c=0;
for (i=0; i<m; i++)
{
a[i]+=b[i]+c;
c=a[i]/10;
a[i]%=10;
}
while (c!=0)
{
a[i]+=c;
c=a[i]/10;
a[i]%=10;
i++;
}
return i;
}
int main()
{
int i,n,a_len,b_len,a[1024],b[1024];
while (scanf("%d",&n))
{
a_len=0;
for (i=0; i<1024; i++) a[i]=0;
b_len=1;
b[0]=1;
for (i=1; i<=n; i++)
{
b_len=mul(b,i,b_len);
a_len=add(a,a_len,b,b_len);
}
for (i=a_len-1; i>=0; i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
热心网友
时间:2024-11-10 01:27
void main()
{
int i,j,k,sum=0;
for(i=1;i<=20;i++)
{
k=0;
for(j=1;j<=i;j++)
k *= j;
sum +=k;
}
printf("sum = %d\n", sum);
}