點擊打開鏈接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;
}