题解 | #大数乘法#
大数乘法
http://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
直接模拟两个数的相乘
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param s string字符串 第一个整数
* @param t string字符串 第二个整数
* @return string字符串
*/
string help(string s,int n){ //计算一个数和一个一位数的乘积
int pre=0;
for(int i=s.size()-1;i>=0;i--){
int temp=(s[i]-'0')*n+pre;
pre=temp/10;
s[i]='0'+(temp%10);
}
if(pre) s.insert(s.begin(),'0'+pre);
return s;
}
string add(string s,string t){ //计算两个字符串相加
if(s.size()<t.size()){
string temp=s;
s=t;
t=temp;
}
int i=s.size()-1,j=t.size()-1,pre=0;
while(i>=0&&j>=0){
int temp=(s[i]-'0')+(t[j]-'0')+pre;
pre=temp/10;
s[i]='0'+(temp%10);
i--,j--;
}
while(i>=0){
int temp=(s[i]-'0')+pre;
pre=temp/10;
s[i]='0'+(temp%10);
i--;
}
if(pre) s.insert(s.begin(),'0'+pre);
return s;
}
string solve(string s, string t) {
// write code here
int i,j;
string res="";
for(i=t.size()-1;i>=0;i--){
string temp=help(s,t[i]-'0');
for(j=0;j<t.size()-1-i;j++) temp.push_back('0');
res=add(res,temp);
}
return res;
}
};