题解 | 大数乘法
大数乘法
https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 第一个整数 * @param t string字符串 第二个整数 * @return string字符串 */ string multi(string s, char c){ string res = ""; if(c == '0'){ return "0"; } int flag = 0; int cc = c - '0'; for(int i = s.size() - 1; i >= 0; --i){ int tmp = (s[i] - '0') * cc + flag; flag = tmp / 10; s[i] = tmp % 10 + '0'; } if (flag){ s = to_string(flag) + s; } return s; } string plus(string s, string t){ int len1 = s.size(); int len2 = t.size(); while (len1 < len2){ s = "0" + s; len1++; } while(len2 < len1){ t = "0" + t; len2 ++; } int carry = 0; for(int i = len1- 1; i >= 0; --i){ int tmp = (s[i] - '0') + (t[i] - '0') + carry; carry = tmp / 10; s[i] = tmp % 10 + '0'; } if(carry){ s = to_string(carry) + s; } return s; } string solve(string s, string t) { // write code here int tn= t.size(); if(s == "0" || t == "0") return "0"; string res = ""; for(int i = tn - 1; i >= 0; --i){ string p = multi(s, t[i]); for(int j = tn - 1; j > i; --j){ p.push_back('0'); } res = plus(res, p); } return res; } };