#include<iostream>
using namespace std;
#include<vector>
vector<int> mul(vector<int>v1,int v2){
vector<int> res;
//当存在其中一个为0时直接返回0即可
if((v1.size()==1&&v1[0]==0)||v2==0){
res.push_back(0);
return res;
}
//类比于高精度加法,这里的 t 也是表示进位,只不过这是乘法的进位
int t=0;
for(int i=0;i<v1.size();i++){
t+=v2*v1[i];
res.push_back(t%10);
t/=10;
}
if(t)res.push_back(t);
return res;
}
int main()
{
string s1;
int s2;
cin>>s1>>s2;
vector<int> v1;
for(int i= s1.size()-1; i>=0; i--) v1.push_back(s1[i]-'0');
auto res=mul(v1,s2);
for(int i=res.size()-1;i>=0;i--) cout<<res[i];
return 0;
}
这里让v1中的每一个数乘以后面的整数,还是很巧妙的。y总牛逼。