char s[1001]; //字符串s存储乘法得到的大数字,s[0]代表低位 int GetLength()//返回s的最大不为空的元素下标 { int i; for(i=1000; i>=0; i--) { if(s[i]!=‘0‘) { break; } } return i; } void cal(int k)//计算大数字s和小数字k相乘 { int add=0;//进位数 int i; int temp; for(i=0; i<=GetLength(); i++)// { temp=(s[i]-‘0‘)*k+add;//注意字符与数字之间的区别,下面也是 s[i]=temp%10+‘0‘; add=temp/10; } while(add) { s[i++]=add%10+‘0‘; add/=10; } } int main() { int n; while(scanf("%d",&n)!=EOF) { //初始化s s[0]=‘1‘; for(int i=1; i<=1000; i++) { s[i]=‘0‘; } //从1开始乘到n for(int i=1; i<=n; i++) { cal(i); } int flag=0; cout<<n<<"!="; for(int i=1000; i>=0; i--) { if(s[i]!=‘0‘) { flag=1; } if(flag) { cout<<s[i]; } } cout<<endl; } return 0; }
时间: 2024-10-14 22:04:19