c++大数乘法
Posted 顾文繁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++大数乘法相关的知识,希望对你有一定的参考价值。
string solve(string s, string t)
int l1 = s.size();
int l2 = t.size();
if(l1 == 0 || l2 == 0) return "0";
bool s_is_zero = true;
bool t_is_zero = true;
for(int i = 0;i < l1;i++)
if(s[i] - '0' != 0) s_is_zero = false;
for(int i = 0;i < l2;i++)
if(t[i] - '0' != 0) t_is_zero = false;
if(s_is_zero || t_is_zero) return "0";
// write code here
reverse(s.begin(), s.end());
reverse(t.begin(), t.end());
vector<int> tmp(l1 + l2, 0);
for(int i = 0;i < l1;i++)
for(int j = 0;j < l2;j++)
tmp[i + j] += (s[i] - '0') * (t[j] - '0');
for(int i = 0;i < l1 + l2;i++)
if(tmp[i] < 0) continue;
int carry = tmp[i] / 10;
tmp[i] %= 10;
tmp[i+1] += carry;
string ret(l1 + l2, '0');
reverse(tmp.begin(), tmp.end());
for(int i = 0;i < l1 + l2;i++)
ret[i] += tmp[i];
if(ret.size() > 1 && ret[0] == '0')
return ret.substr(1, ret.size()-1);
if(ret.empty()) return "0";
return ret;
以上是关于c++大数乘法的主要内容,如果未能解决你的问题,请参考以下文章