写了几个高精度的板子,不得不说stl是真好用
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <algorithm>
#include <vector>
#include <queue>
#include <cctype>
#include <cmath>
#include <cstring>
#include <stack>
#include <tuple>
#include <numeric>
#define forn(i, n) for(int i = 0; i < int(n); ++i)
using namespace std;
using ll = long long;
template <typename T> void read(T & x){
x = 0; int op = 1; char ch = getchar();
while (!isdigit(ch)){ if (ch == '-') op = -1; ch = getchar();}
while (isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48); ch = getchar();}
x*= op;
}
vector<int> mul(vector<int> a, int x){
vector<int> res;
int t = 0;
for (int i = 0; i < a.size(); ++i) {
t += x * a[i];
res.push_back(t % 10);
t /= 10;
}
while (t){
res.push_back(t % 10);
t /= 10;
}
while (res.size() > 1 && res.back() == 0) res.pop_back();
return res;
}
vector<int> add(vector<int> a, vector<int> b){
vector<int> res;
int t = 0;
for (int i = 0; i < max(a.size(), b.size()); ++i) {
if (i < a.size()) t += a[i];
if (i < b.size()) t += b[i];
res.push_back(t % 10);
t /= 10;
}
while (t){
res.push_back(t % 10);
t /= 10;
}
while (res.size() > 1 && res.back() == 0) res.pop_back();
return res;
}
vector<int> vmul(vector<int> a, vector<int> b){
vector<int> res;
for (int i = 0; i < b.size(); ++i) {
res = add(res, mul(a, b[i]));
a.insert(a.begin(), 0);
}
while (res.size() > 1 && res.back() == 0) res.pop_back();
return res;
}
vector<int> get(){
string s; cin >> s;
int len = s.length();
vector<int> res(len);
for (int i = 0; i < len; ++i) {
res[i] = s[len - i - 1] - '0';
}
return res;
}
int main() {
ios::sync_with_stdio(false);
vector<int> a = get();
vector<int> b = get();
vector<int> c = vmul(a, b);
for (int i = c.size() - 1; i >= 0; --i) {
cout << c[i];
}
return 0;
}