NowCoder大数乘法
Posted 清水寺扫地僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NowCoder大数乘法相关的知识,希望对你有一定的参考价值。
描述
以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。(字符串长度不大于10000,保证字符串仅由’0’~'9’这10种字符组成)
示例1
输入:"11","99"
返回值:"1089"
说明:11*99=1089
代码实现
以12*99为例:
处理进位:
最终结果1188。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param s string字符串 第一个整数
* @param t string字符串 第二个整数
* @return string字符串
*/
string solve(string s, string t) {
// write code here
reverse(s.begin(), s.end());
reverse(t.begin(), t.end());
vector<int> bits(s.size() + t.size());
for(int i = 0; i < s.size(); ++i) {
for(int j = 0; j < t.size(); ++j) {
bits[i+j] += (s[i] - '0') * (t[j] - '0');
}
}
vector<int> ret;
int carry = 0;
for(int bit : bits) {
bit += carry;
ret.push_back(bit % 10);
carry = bit / 10;
}
while(carry) {
ret.push_back(carry % 10);
carry /= 10;
}
string res;
for(int num : ret)
res += to_string(num);
reverse(res.begin(), res.end());
return res;
}
};
以上是关于NowCoder大数乘法的主要内容,如果未能解决你的问题,请参考以下文章