模板:大整数乘法

 1 #include <string>
 2 #include <vector>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 string mul(string str1,string str2)
 8 {
 9     vector<int> v_res(str1.size()+str2.size(),0);
10     string::size_type i,j;
11     vector<int>::size_type k,p;
12 
13     reverse(str1.begin(),str1.end());
14     reverse(str2.begin(),str2.end());
15     for(i = 0; i != str1.size(); ++i)
16     {
17         for(j = 0; j != str2.size(); ++j)
18         {
19             v_res[i+j] += (str1[i]-'0') * (str2[j] - '0');
20         }
21     }
22     for(k = 0; k != v_res.size() - 1; ++k)
23     {
24         v_res[k+1] += v_res[k] / 10;
25         v_res[k] = v_res[k] % 10;
26     }
27 
28     for(p = v_res.size() - 1; p != -1; --p)
29     {
30         if(v_res[p] != 0) break;
31     }
32     if(p == -1) p = 0;
33 
34     string s_res(p+1,'0');
35     for(k = p; k != -1; --k) s_res[p-k] = char(v_res[k] + '0');
36     
37 
38     return s_res;
39 
40 }
原文地址:https://www.cnblogs.com/mobileliker/p/3516920.html