问题:
计算两个非负整数 的乘积, 可能会很大。
输入格式:
第一行输入一个非负整数
。
第二行输入一个非负整数
。
的长度不大于
。
输出格式
输出
的值。
样例输入:
4321
1234
样例输出:
5332114
题解:
思路:和上一题思路基本一致,把两个字符串分别变成数字,存到对应的数组中,然后在依次相乘
#include<iostream>
#include<string>
using namespace std;
char a[20005], b[20005];
int ReverseA[20005], ReverseB[20005];
int result[40005];
int main(void)
{
string a, b;
cout << "请输入两个数:";
cin >> a >> b;
int x, len_a = a.length(), len_b = b.length();
//s.length()的意思是计算字符串s的长度,其返回值是一个整数
for (int i = 0; i <= len_a - 1; i++)
ReverseA[i] = a[len_a - 1 - i] - '0';
for (int i = 0; i <= len_b - 1; i++)
ReverseB[i] = b[len_b - 1 - i] - '0';
for (int i = 0; i < len_a; i++)
for (int j = 0; j < len_b; j++)
result[i + j] += ReverseA[i] * ReverseB[j];
for (x = 0; x < len_a + len_b; x++)
{
result[x + 1] += result[x] / 10;
result[x] = result[x] % 10;
}
while (result[x] == 0 && x > 0)
{
x--;
}
cout << "他们的乘积为:";
for (x; x >= 0; x--)
cout << result[x];
cout << endl;
system("pause");
return 0;
}