#include<bits/stdc++.h>
using namespace std;
vector<int> a , b ;
vector<int> add(const vector<int> &a, const vector<int> &b)
{
//默认是a长 b短
if(b.size() > a.size()) return add(b,a) ;
int t = 0;
vector<int> c ;
for(int i=0; i<a.size() || t; i++){
if(i<a.size()) t += a[i];
if(i<b.size()) t += b[i];
c.emplace_back(t%10);
t /= 10;
}
reverse(c.begin() , c.end() ) ;
return c;
}
vector<int> jian(const vector<int> &a, const vector<int> &b)
{
vector<int> c ;
int t = 0;//借位
for(int i=0; i<a.size(); i++){
t = a[i] - t;
if(i < b.size()) t -= b[i];
c.push_back( (t+10) % 10) ;
if(t < 0 ) t = 1;
else t = 0;
}
//去除前导0
while(c.back() == 0 && c.size() > 1) c.pop_back() ;
reverse(c.begin(), c.end() ) ;
return c ;
}
//字符串比较
bool cmp(string s1, string s2){
if(s1.size()!= s2.size()){
for(int i=0; i<max(s1.size() , s2.size()); i++){
if(s2[i] != s1[i]) return s1[i] < s2[i];
}
}else{
return s1 < s2 ;
}
}
vector<int> mul(const vector<int> &a, int b)
{
vector<int> c;
int t = 0;
for(int i=0; i<a.size() || t; i++){
if(i < a.size()) t += b * a[i];
c.push_back(t % 10);
t/=10;
}
while(c.back() == 0 && c.size() > 1) c.pop_back() ;
reverse(c.begin(), c.end() ) ;
return c ;
}
int main(){
// "987"
// "43"
string s1;
string s2;
int b;
cin >> s1 >> b;
for(auto i :s1) a.emplace_back(i-'0');reverse(a.begin(), a.end());
//for(auto i :s2) b.emplace_back(i-'0');reverse(b.begin(), b.end());
//高精度加法
//vector<int> c = add(a,b);
//高精度减法
// vector<int> c;
// if(cmp(s1,s2)) {
// cout << '-';
// c = jian(b,a);
// }else{
// c = jian(a,b);
// }
//高精度乘以低精度 string s1; int b;
vector<int> c = mul(a, b);
for(auto i : c) {
cout << i ;
}
return 0;
}
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com