题目地址:
https://www.acwing.com/problem/content/description/795/
给定一个正整数 A A A和另一个非负整数 B B B,计算 A × B A\times B A×B。
输入格式:
共两行,第一行包含整数
A
A
A,第二行包含整数
B
B
B。
输出格式:
共一行,包含
A
∗
B
A * B
A∗B的值。
数据范围:
1
≤
l
A
≤
100000
1\le l_A\le 100000
1≤lA≤100000
0
≤
B
≤
10000
0\le B \le 10000
0≤B≤10000
高精度乘法。由于 B B B较小,我们可以直接把 B B B与 A A A的每一位相乘。代码如下:
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
string mult(string& a, int b) {
// 除非b = 0,否则答案不会含前导0的
if (b == 0) return "0";
string res;
int t = 0;
for (int i = a.size() - 1; i >= 0; i--) {
int prod = (a[i] - '0') * b + t;
res.push_back(prod % 10 + '0');
t = prod / 10;
}
while (t) {
res.push_back(t % 10 + '0');
t /= 10;
}
reverse(res.begin(), res.end());
return res;
}
int main() {
string a;
int b;
cin >> a >> b;
cout << mult(a, b) << endl;
}
时空复杂度 O ( l A ) O(l_A) O(lA)。