链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28
大数问题。
模拟手工运算,用一个变量储存进位:被乘数逐位乘以乘数。
#include <stdio.h> #include <string.h> #include <stdlib.h> int ans[20000]; char tem[5]; int t; //储存进位 int main() { int i,j; int k; int c; scanf("%s",tem); for(i=strlen(tem)-1,j=0;i>=0;i--,j++) ans[j]=tem[i]-'0'; k=strlen(tem); for (i=2;i<atoi(tem);i++) //要乘的数 { for (j=0;j<k;j++) //当前的要乘的位 { c=ans[j]*i+t; ans[j]=c%10; t=c/10; //进位 } while(t!=0) { ans[j]=t%10; t=t/10; k++; //长度+1 j++; } } for (i=j-1;i>=0;i--) printf("%d",ans[i]); printf(" "); return 0; }