/*1381. a*b
高精度计算乘法
1、按位加
2、乘法运算拆分。如12 * 24可以分成 12*4 + 120 * 2
*/
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
string clear(string &x)
{
if(x=="")
x='0';
while(x.length() >0 && x[0] == '0')
x.erase(0,1);
if(x=="")
x = '0';
return x;
}
string add(string x, string y)
{
//对齐
while(x.length() < y.length()) x = '0' + x;
while(x.length() > y.length()) y = '0' + y;
//cout << x.length() << " " << y.length() << endl;
//前面补0
x = '0' + x;
y = '0' + y;
for(int i=x.length()-1; i>=0; i--)
{
x[i] = x[i] + y[i] - '0';
if(x[i] > '9')
{
x[i] = x[i] - 10;
x[i-1] += 1;
}
}
clear(x);
return x;
}
int main ()
{
int t;
string a, b;
string produce;
cin >> t;
for(int i=1; i<=t; i++){
cin >> a >> b;
string result = "";
// cout << result << endl;
for(int j=b.length()-1; j>=0; j--)
{
int addCount = b[j]-'0';
if(j<b.length()-1)
a = a+'0';
for(int count=1; count<=addCount; count++ )
{
result = add(result, a);
}
}
if(result=="")
cout << 0 << endl;
else
cout << result << endl;
}
system("pause");
return 0;
}
1381. a*b 高精度计算乘法
最新推荐文章于 2022-01-01 15:47:45 发布