#include "iostream"
#include "string"
#include "string.h"
#include "sstream"
using namespace std;
int main ()
{
int T;
string str1, str2;//输入的两个整数用字符串来表示
cin >> T;
while (T--)
{
cin >> str1 >> str2;
int length1 = str1.size();
int length2 = str2.size();
int *a = new int [length1];
int *b = new int [length2];
for (int i = 0; i < length1 ; i++)//将字符串转化为数字,保存在数组中
{
stringstream s1;
s1 << str1[i];
s1 >> a[i];
}
for (int i = 0; i < length2 ; i++)
{
stringstream s2;
s2 << str2[i];
s2 >> b[i];
}
int *c = new int [length1 + length2];//c数组存放两整数相乘的结果
memset(c, 0, 4*(length1+length2));
int s = 0;
for (int i = length2-1; i >= 0; i--, s++)
{
int k = s;
for (int j = length1-1; j >= 0 ; j--)//根据乘法相乘的规律来得出结果
{
c[k] += a[j] * b[i];
k = k + 1;
}
}
for (int i = 0; i < (length1 + length2); i++)//判断是否需要进位!
if (c[i] >= 10)
{
c[i+1] += c[i] / 10;
c[i] = c[i] % 10;
}
int q;
for (q = (length1 + length2)-1; q >= 0 ; q--)//判断数组前面是否存在0,如果存在就去掉!
{
if (c[q] != 0)
{
for (int i = q; i >= 0; i--)
cout << c[i];
break;
}
if (q == 0) //如果数组存放的全部是0,就输出0即可!
cout << 0 ;
}
cout << endl;
}
}
sicily 1381(高精度)
最新推荐文章于 2017-10-23 13:40:19 发布