点击打开链接http://acm.nyist.net/JudgeOnline/problem.php?pid=28
大数乘法之模拟手工算法:
模拟手工算法很有意思,就是一步一步往下乘,当然要做个很大的数组,数组最好定义为整体变量,用手工的算法算出来..
编码如下:
#include <iostream>
using namespace std;
int a[100000];
int main()
{
int m;
cin >> m;
a[1] = 1;
int n=0, p =1; // n 表示进位, p 表示位数
for(int i=2; i<=m; ++i){ // 小于 m 的每个数
int j;
n = 0;
for( j=1; j<=p; ++j){
a[j] = a[j]*i + n; // +n : 表示加上前一位数的进位
n = a[j]/10;
a[j] = a[j]%10;
}
while(n){ // 有进位时
a[j] = n%10;
n = n/10;
++j;
}
p = j-1;
}
for(int i = p; i>0; --i){ //倒序输出
cout << a[i];
}
cout << endl;
return 0;
}