1.进位
int s=c[j]*i+jw; jw=s/10; c[j]=s%10;
源码
#include <stdio.h> #include <string.h> #define Max 3000 void multiply(int n); int main() { int n; scanf("%d",&n); factorial(n); } void factorial(int n){ int c[Max]={0}; c[0]=1; for(int i=2;i<=n;i++){ int jw=0; for(int j=0;j<Max;j++){ int s=c[j]*i+jw; jw=s/10; c[j]=s%10; } } int len=Max; for(int i=len-1;i>=0;i--) { if(c[i]==0&&len>1) len--; else break; } for(int i=len-1;i>=0;i--) printf("%d",c[i]); }
以上代码仅供参考