模板:大整数乘法

 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 }

 

你可能感兴趣的:(模板)