模拟手算乘法的过程:
abc*de:
c*de+l对10求余=》c
进位l=c*de+l/10;
...
最后一步的进位l可能是多位数,所以分为个位数循环往数组后面存。。。
#include<stdio.h>
int a[16350];
int main(){
int i,j,l;
int len=1;
a[0]=1;
int n;
scanf("%d",&n);
for(i=2;i<=n;i++){
l=0;
for(j=0;j<len;j++){
int n=a[j]*i+l;
a[j]=n%10;
l=n/10;
}
while(l){
a[len++]=l%10;
l/=10;
}
}
for(i=len-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}