![]()
class Solution {
public:
int n;
vector<int> a,b,l;
vector<vector<int> > res;
vector<vector<int> > qwe;
int num[10];
int o;
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0"){
return "0";
}
int i,k,j,tmp,ss,t;
a.clear();
b.clear();
l.clear();
n=max(num1.length(),num2.length());
for(i=0;i<10;i++){
num[i]=false;
}
for(i=0;i<num1.length();i++){
a.push_back(num1[num1.length()-1-i]-'0');
num[num1[num1.length()-1-i]-'0']=true;
}
for(i=0;i<num2.length();i++){
b.push_back(num2[num2.length()-1-i]-'0');
//num[num2[num2.length()-1-i]-'0']=true;
}
for(i=0;i<10;i++){
l.clear();
if(num[i]){
o=0;
//cout<<i<<":";
for(j=0;j<b.size();j++){
tmp=i*b[j]+o;
t=tmp/10;
l.push_back(tmp%10);
//cout<<tmp%10;
o=t;
}
if(o!=0){
l.push_back(o);
//cout<<o;
}
//cout<<endl;
}
qwe.push_back(l);
l.clear();
}
/*
for(i=0;i<n;i++){
t=0;
o=0;
for(j=0;j<n;j++){
tmp=a[i]*b[j]+o;
t=tmp/10;
l.push_back(tmp%10);
//cout<<tmp%10;
o=t;
}
if(o!=0){
l.push_back(o);
//cout<<o;
}
res.push_back(l);
//cout<<endl;
l.clear();
}
*/
ss=0;
t=0;
for(i=0;i<2*n;i++){//答案的第i位
ss=0;
for(j=0;j<a.size();j++){//第j行
if(i-j<qwe[a[j]].size()&&a[j]!=0){
ss+=qwe[a[j]][i-j];
}
}
ss+=t;
t=ss/10;
/*if(ss==0&&i>2*n){
break;
}*/
l.push_back(ss%10);
}cout<<endl<<endl<<"result:";
string lll="";
while(l[l.size()-1]==0){
l.pop_back();
}
for(i=0;i<l.size();i++){
cout<<l[l.size()-i-1];
lll+=l[l.size()-i-1]+'0';
}
return lll;
}
};