Product |
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<iostream> #include<cstdio> #include<string> #include<cstring> 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; }
uva10106 - Product,布布扣,bubuko.com
原文:http://blog.csdn.net/u011863942/article/details/25001689