超级计算机

题目描述

贝贝是学校信息学编程小组的学生,一天,他的数学老师碰到这样一个问题:他想求两个很长的数的乘积,但用普通的计算器无法完成计算,于是他请编程班的贝贝帮忙设计一个“超级计算器”,解决他所遇到的问题。

请你编一程序,帮助贝贝解决这个问题。

输入输出格式

输入格式:

两行,分别是两个在10^10~10^100以内的自然数。

输出格式:

一行,为两数相乘的结果。

输入输出样例

输入样例:
578474357954668
12435124571
输出样例:
7193400702295541350947428

思路:同加减法,辨别进位。
代码:
//程序名:新的C++程序
//作者: 

#include<iostream>
#include<fstream>
#include<algorithm>
#include<string>
using namespace std; 
int a[1001],b[1001],c[1000001],la,lb,lc,x; 
string ans,a1,b1;
int main()
{
    cin>>a1>>b1;
     la=a1.size();lb=b1.size();
     for(int i=0;i<=la-1;i++)a[la-i]=a1[i]-48;
     for(int i=0;i<=lb-1;i++)b[lb-i]=b1[i]-48;
     for(int i=1;i<=la;i++)
     {
            x=0;
            for(int j=1;j<=lb;j++)
            {
                    c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
                    x=c[i+j-1]/10;
                    c[i+j-1]%=10;
            }
           c[i+lb]=x;
     }
     lc=la+lb;
     while(c[lc]==0&&lc>1)lc--;
     for(int i=lc;i>=1;i--)cout<<c[i];
} 
View Code

 

 
 
posted @ 2019-04-16 12:37  背‘水’一栈  阅读(164)  评论(0编辑  收藏  举报