高精度高精度乘法

Posted rhythm-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度高精度乘法相关的知识,希望对你有一定的参考价值。

问题 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

 


 








以上是关于高精度高精度乘法的主要内容,如果未能解决你的问题,请参考以下文章

求助 c语言实现高精度乘法

高精度 加法 减法 乘法 除法 整合

n阶高精度乘法,(求高阶阶乘)

高精度乘法和除法

算法AcWing 793. 高精度乘法

从零开始的算法学习生活——①高精度运算