A*B Problem
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
样例 #1
样例输入 #1
1
2
样例输出 #1
2
提示
每个非负整数不超过 1 0 2000 10^{2000} 102000。
c++
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
char s1[N], s2[N];
int s3[N], len;
int main()
{
cin >> s1 >> s2;
int len1 = strlen(s1);
int len2 = strlen(s2);
int size = max(len1,len2);
for (int i = 0; i < size; i++)
{
int a, b, c;
if (len1>0)
a = s1[len1 - 1] - '0';
else
a = 0;
if (len2> 0)
b = s2[len2 - 1] - '0';
else
b = 0;
c = a + b;
int d = s3[i];
s3[i]=(d+c % 10)%10;
s3[i + 1] = (d + c) / 10;
len1--;
len2--;
}
int k = max(len1, len2);
if (s3[size] == 0)size--; //如果首位为0,排除
for (int i = size; i >= 0; i--)
{
cout << s3[i];
}
}