The problem is to multiply two integers X, Y. (0<=X,Y<10250)
The input will consist of a set of pairs of lines. Each line in pair contains one multiplyer.
For each input pair of lines the output line should consist one integer the product.
12 12 2 222222222222222222222222
144 444444444444444444444444
使用一個數組報春被乘數個位與乘數的相乘結果,在左移一位累加保存被乘數十位與乘數的相乘結果,以此類推,數組的下標為i的元素的值擁有權值為10^i,代碼如下
#include#include #include #include using namespace std; #define MAX 1000000 int ans[MAX]; int main(void){ string str1, str2; #ifndef ONLINE_JUDGE freopen("f:\\infile.txt", "r", stdin); #endif while(cin >> str1 >> str2){ int i; memset(ans, 0, sizeof(ans)); for(i = str1.size()-1; i >= 0; i--){ for(int j = str2.size()-1, p = str1.size()-1-i; j >=0; j--, p++){ ans[p] += (str1[i]-'0')*(str2[j]-'0'); } } for(i = 0; i < MAX; i++){ ans[i+1] += ans[i]/10; ans[i] = ans[i]%10; } for(i = MAX-1; i >=0; i--){ if(ans[i]) break; } if(i == -1) cout << 0 << endl; else{ for(int j = i; j >= 0; j--){ cout << ans[j]; } cout << endl; } } return 0; }