題目描述
有兩個用字符串表示的非常大的大整數,算出他們的乘積,也是用字符串表示。不能用系統自帶的大整數類型。
輸入描述:
空格分隔的兩個字符串,代表輸入的兩個大整數
輸出描述:
輸入的乘積,用字符串表示
示例1
輸入
複製
72106547548473106236 982161082972751393
輸出
複製
70820244829634538040848656466105986748
int main()
{
string str1,str2;
cin >> str1 >> str2;
int len1 = str1.size();
int len2 = str2.size();
string ans(len1 + len2, '0');
int x = 0;
for(int i = len1 - 1; i>= 0; i--)
{
for(int j = len2 - 1; j >= 0; j--)
{
int val1 = str1[i] - '0';
int val2 = str2[j] - '0';
int mul = val1 * val2;
int pos = len1 - 1 - i + len2 - 1 - j;
int all = x + mul + ans[pos] - '0';
ans[pos] = all % 10 + '0';
x = all / 10;
}
if(x != 0)
{
ans[len1 - 1 - i + len2] = (char)(x + '0');
x = 0;
}
}
int i = 0;
string ans2 = "";
if(x != 0)
ans2 = ans2 + (char)(x + '0');
for(i = ans.size() - 1; i >= 0; i--)
{
if(ans[i] != '0')
break;
}
for(; i >= 0; i--)
{
ans2 += ans[i];
}
cout << ans2 << endl;
return 0;
}