题解 | #大数乘法#

大数乘法

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;
    }
};
全部评论

相关推荐

点赞 评论 收藏
转发
头像
03-18 09:09
Java
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务