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 }