这道题就是利用:123*32 = 123*2 + 123*30
所以记得缩进之类的就可以了
class Solution {
public:
string mul(string num1,char c)
{
reverse(num1.begin(),num1.end());
string ans = "";
int t = c - '0';
int r = 0;
for(int i = 0;i<num1.size();i++)
{
t = c-'0';
t = t * (num1[i] - '0') + r;
ans.push_back(t%10 + '0');
r = t/10;
}
if(r) ans.push_back(r + '0');
reverse(ans.begin(),ans.end());
return ans;
}
string add(string num1,string num2)
{
string ans;
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
int i = 0;
int r = 0;
while(i<num1.size() || i<num2.size())
{
char c1 = i<num1.size() ? num1[i] : '0';
char c2 = i<num2.size() ? num2[i] : '0';
int t = (c1-'0')+(c2-'0')+r;
ans.push_back(t%10 + '0');
r = t/=10;
i++;
}
if(r) ans.push_back(r+'0');
reverse(ans.begin(),ans.end());
return ans;
}
string multiply(string num1, string num2) {
string ans;
for(int i = 0;i < num2.size();i++)
{
string t = mul(num1,num2[i]);
ans.push_back('0');
ans = add(ans,t);
cout<<ans<<endl;
}
double t;
stringstream ss(ans);
ss>>t;
if(t == 0) return "0";
return ans;
}
};