zoukankan      html  css  js  c++  java
  • 【高精度】高精度乘法

    问题 J: 【高精度】高精度乘法

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 286  解决: 94
    [提交] [状态] [讨论版] [命题人:]

    题目描述

    牢门上的第三道锁,需要使用高精度乘法来破译出相应密码,当然,必须使用“万进制算法”计算两个非负整数A、B的积,其中A和B的位数在10000位以内。

    输入

    共两行数据,第一行为一个非负整数A,第二行为一个非负整数B,A、B的位数均在10000以内。

    输出

    输出一个数,即A和B的乘积。

    样例输入

    2
    3
    

    样例输出

    6
    
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    string multi(string num1,string num2){
        string ans="";int len1=num1.size(),len2=num2.size(),add=0;
        vector<long long>tmp(len1+len2-1);
        for(int i=0;i<len1;++i){
            int p1=num1[i]-'0';
            for(int j=0;j<len2;++j){
                int p2=num2[j]-'0';
                tmp[i+j]+=p1*p2;
            }
        }
        for(int i=tmp.size()-1;i>=0;--i){
            int now=tmp[i]+add;
            tmp[i]=now%10;
            add=now/10;
        }
        while(add!=0){
            int now=add%10;
            add/=10;
            tmp.insert(tmp.begin(),now);
        }
        for(auto a:tmp)ans+=to_string(a);
        if(ans.size()>0&&ans[0]=='0')return "0";
        return ans;
    }
    int main(int argc, char *argv[]) {
        string num1,num2;
        while(cin>>num1>>num2)
        cout<<multi(num1,num2)<<endl;
        return 0;
    }
    View Code

  • 相关阅读:
    HackerRank
    HackerRank
    LeetCode "Kth Smallest Element in a BST"
    HackerRank
    HackerRank
    LeetCode "Roman to Integer"
    LeetCode "Integer to Roman"
    LeetCode "Majority Element II"
    HackerRank
    HackerRank
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9348898.html
Copyright © 2011-2022 走看看