大数相乘

Posted caijiaming

tags:

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

题目链接:https://www.51nod.com/Challenge/Problem.html#!#problemId=1027

题意:给出2个大整数A,B,计算A*B的结果。

就是大数相乘板子

看代码:

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=2000+5;
int main()
{
    string s1,s2;
    int ans[maxn];
    memset(ans,0,sizeof(ans));
    cin>>s1>>s2;
    reverse(s1.begin(),s1.end());//翻转一下 使得进位更方便
    reverse(s2.begin(),s2.end());
    int len1=s1.length();
    int len2=s2.length();
    for(int i=0;i<len1;i++)//模拟相乘过程
    {
        for(int j=0;j<len2;j++)
        {
            ans[i+j]+=(s1[i]-0)*(s2[j]-0);
            ans[i+j+1]+=ans[i+j]/10;
            ans[i+j]%=10;
        }
    }
    int flag=0;
    for(int i=len1+len2-1;i>=0;i--)//最长的时候是二者长度相加-1  
    {
        if(flag==0&&ans[i]!=0)//判断前导0
        {
            flag=1;
        }
        if(flag) cout<<ans[i];
    }
    cout<<endl;
    if(flag==0) cout<<0<<endl;//全为0的情况
    return 0;
}

 

以上是关于大数相乘的主要内容,如果未能解决你的问题,请参考以下文章

大数相乘-蛮力法

大数相乘

大数相乘相加相减相除

Karatsuba乘法--实现大数相乘

js大数相加和大数相乘

js大数相加和大数相乘