输入n,计算1!+2!+3!+...+n!
由于100>n>50 此题需要用高精度,我的程序如下,我的程序哪里有错?
#include "stdio.h"
int a[70]={1},b[70]={0},la=1,lb=0;
int main()
{
FILE *in=fopen("factor.in","r"),*out=fopen("factor.out","w");
int n,i,j,t=0;
fscanf(in,"%d",&n);
for (i=1;i<=n;i++)
{
printf("%d\n",i);
for (j=0;j<la;j++)
{
a[j]=a[j]*i+t;
t=a[j]/10;
a[j]%=10;
}
for (;j<=lb+5;j++)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
la+=5;
t=0;
while(a[la]==0) la--;
la++;
for(t=0;t<la;t++) printf("%d",a[t]);
printf("\n");
if(la>lb) lb=la;
for (j=0;j<lb;j++)
{
b[j]+=a[j];
b[j+1]+=b[j]/10;
b[j]%=10;
}
for (;j<=lb+5;j++)
{
b[j+1]+=b[j]/10;
b[j]%=10;
}
lb+=5;
while(b[lb]==0) lb--;
lb++;
for(t=0;t<lb;t++) printf("%d",b[t]);
printf("\n\n");
t=0;
}
getch();
for (i=lb-1;i>=0;i--) fprintf(out,"%d",b[i]);
fclose(in);
fclose(out);
}
由于100>n>50 此题需要用高精度,我的程序如下,我的程序哪里有错?
#include "stdio.h"
int a[70]={1},b[70]={0},la=1,lb=0;
int main()
{
FILE *in=fopen("factor.in","r"),*out=fopen("factor.out","w");
int n,i,j,t=0;
fscanf(in,"%d",&n);
for (i=1;i<=n;i++)
{
printf("%d\n",i);
for (j=0;j<la;j++)
{
a[j]=a[j]*i+t;
t=a[j]/10;
a[j]%=10;
}
for (;j<=lb+5;j++)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
la+=5;
t=0;
while(a[la]==0) la--;
la++;
for(t=0;t<la;t++) printf("%d",a[t]);
printf("\n");
if(la>lb) lb=la;
for (j=0;j<lb;j++)
{
b[j]+=a[j];
b[j+1]+=b[j]/10;
b[j]%=10;
}
for (;j<=lb+5;j++)
{
b[j+1]+=b[j]/10;
b[j]%=10;
}
lb+=5;
while(b[lb]==0) lb--;
lb++;
for(t=0;t<lb;t++) printf("%d",b[t]);
printf("\n\n");
t=0;
}
getch();
for (i=lb-1;i>=0;i--) fprintf(out,"%d",b[i]);
fclose(in);
fclose(out);
}