码迷,mamicode.com
首页 > 其他好文 > 详细

大数相乘

时间:2019-02-25 21:46:12      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:过程   pac   main   eof   nod   amp   51nod   col   --   

题目链接: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;
}

 

大数相乘

标签:过程   pac   main   eof   nod   amp   51nod   col   --   

原文地址:https://www.cnblogs.com/caijiaming/p/10433554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!