牛客题霸 [ 大数乘法] C++题解/答案
题目描述
以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。
(字符串长度不大于10000,保证字符串仅由’0’~'9’这10种字符组成)
题解:
高精度问题的基本模板
本质就是模拟手算乘法的过程,先乘对应位,然后%10进位
虽然是模板,但是我调了好久。。不知道哪错了
代码:
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* * @param s string字符串 第一个整数* @param t string字符串 第二个整数* @return string字符串*/string solve(string s, string t) {// write code hereif(s=="0"||t=="0")return "0";int len1=s.size();int len2=t.size();string a="";vector<int>num(len1+len2,0);for(int i=len1-1;i>=0;i--){for(int j=len2-1;j>=0;j--){num[i+j+1]+=(s[i]-'0')*(t[j]-'0');num[i+j]+=num[i+j+1]/10;num[i+j+1]%=10;}}int i=0;bool f=0;while(i<num.size()){if(i==0&&num[i]!=0)f=1;if(num[i]==0&&f==0){i++;f=1;}else a.push_back(num[i++]+'0');}return a;}
};