大整数乘法
题目描述
求两数的积。
输入输出格式
输入格式:
两行,两个数。
输出格式:
积
输入输出样例
输入样例
1
2
输出样例
2
#include<iostream>
#include<string>
#include<queue>
#include<vector>
using namespace std;
int main() {
string a, b, num;
queue<int>q;
vector<int>v;
cin >> a >> b;
int len_a, k, len_v, t = 0;
int len_b = b.length() - 1;
while (len_b >= 0) {
string str;
len_a = a.length() - 1;
k = 0, len_v = v.size();
while (len_a >= 0) {
int sum = (b[len_b] - '0')*(a[len_a] - '0') + k;
q.push(sum % 10);
k = sum / 10;
len_a--;
}
len_b--;
if (k != 0)
q.push(k), k = 0;
int start = t++;
while (!q.empty()){
if (start >= len_v)
v.push_back(q.front() + k), k = 0;
else {
int sum = v[start] + q.front() + k;
v[start] = sum % 10;
k = sum / 10;
}
start++, q.pop();
}
if (k != 0)
v.push_back(k);
}
int start = v.size() - 1;
while (start > 0 && v[start] == 0)
start--;
for (int i = start; i>=0; i--)
cout << v[i];
return 0;
}