#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
vector<int> Multiply(string &str1,string &str2)
{
vector<int>vec(str1.size()+str2.size(),0);
for(int i = str2.size()-1 , m = 0; i >= 0; i--, m++)
{
for(int j = str1.size()-1 ,k = 0; j >= 0; j--, k++)
{
vec[k+m] += (str2[i] - '0')*(str1[j] - '0') ;
}
}
return vec;
}
void Dealvector(vector<int>&vec)
{
for(int i = 0; i < vec.size(); i++)
{
if( vec[i] >= 10)
{
vec[i+1] = vec[i+1] + vec[i]/10;
vec[i] = vec[i] %10;
}
}
}
string getresult(vector<int>&vec)
{
int len = vec.size()-1;
while(vec[len] == 0 && len-- >1)vec.pop_back();
vec.shrink_to_fit();
string result = "";
for_each(vec.rbegin(),vec.rend(),[&](int num)
{
result.append(to_string(num));
});
return result;
}
int main(){
string str = "9999";
string str2 = "9999";
vector<int> vec( Multiply(str,str2));
Dealvector(vec);
string res = getresult(vec);
return 0;
}
C++版大数相乘
最新推荐文章于 2019-08-03 00:05:42 发布