-
设置进位的标志量,这个进位的标志量必须在处理好,要不然影响下一次计算
-
#include
#include
#include
using namespace std;
string MultiplyStrings(const string &str1, const string &str2)
{
string res = “”;
int n = str1.size();
int m = str2.size();
vector vec(m + n,0);
int jin = 0;
int wei = 0;
for (int i = n - 1; i >= 0; i–)
{
for (int j = m - 1; j >= 0; j–)
{
int num1 = (str1[i] - ‘0’)*(str2[j] - ‘0’)+jin;
int ge = num1 % 10;
jin = num1 / 10;
if (vec[n + m - wei - (m - 1 - j) - 1] + ge >= 10)
{
vec[n + m - wei - (m - 1 - j) - 1] = (vec[n + m - wei - (m - 1 - j) - 1] + ge) % 10;
jin = (vec[n + m - wei - (m - 1 - j) - 1] + ge) / 10;
}
else
{
vec[n + m - wei - (m - 1 - j) - 1] = vec[n + m - wei - (m - 1 - j) - 1] + ge;
}} if (jin != 0) { vec[n + m - wei - (m - 1) - 1 - 1] = jin; jin = 0; } wei++;
}
int i = 0;
while (vec[i] == 0)
{
vec.erase(vec.begin());
}
for (int i = 0; i < vec.size(); i++)
{
res.push_back(vec[i] + ‘0’);
}
return res;
}
int main()
{
cout<<MultiplyStrings(“123”,“111”)<<endl;
system(“pause”);
return 0;
}
Multiply Strings 字符串相乘
最新推荐文章于 2020-02-14 22:11:20 发布