大数乘法
string solve(string, string)
设置中间进位变量c和累加变量d(从上到下考虑,不用存储中间变量)
1 string multiply(string num1, string num2) { 2 int len1 = num1.size(); 3 int len2 = num2.size(); 4 int c = 0; 5 string tmp(len1+len2,‘0‘); 6 for(int i=len2-1;i>=0;i--) 7 { 8 int b = num2[i]-‘0‘; 9 for(int j=len1-1;j>=0;j--) 10 { 11 int a = num1[j]-‘0‘; 12 int d = tmp[i+j+1]-‘0‘; 13 int x = a*b+d+c; 14 tmp[i+j+1] = x%10 +‘0‘; 15 c = x/10; 16 } 17 if(c) 18 { 19 tmp[i] = c+‘0‘; 20 c=0; 21 } 22 } 23 int k=0; 24 for(;tmp[k]==‘0‘&&k<tmp.size();k++); 25 if(k==tmp.size())return "0"; 26 else return tmp.substr(k); 27 }
原文:https://www.cnblogs.com/demian/p/10424197.html