大整数乘法

大整数乘法

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

Input

  第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)

Output

  输出A * B

Sample Input

123456
234567

Sample Output

28958703552

代码

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;

const int N=2001;
int a[N],b[N],c[N];
char num1[N],num2[N];


int main(){
    cin>>num1>>num2;
    int len1 = strlen(num1);
    int len2 = strlen(num2);

    for (int i = 0; i < len1; i++)
    {
        a[len1-i]=num1[i]-'0';
    }

    for (int i = 0; i < len2; i++)
    {
        b[len2-i]=num2[i]-'0';
    }

    int p=0,sum;
    int t;


    for (int i = 1; i <=len2 ; i++)
    {
        p=0;//p是每用一个b中的数乘a中每个数每步产生的进位
        for (int j = 1; j <= len1; j++)
        {
            t= j+i;
            sum =a[j]*b[i]+p+c[t-1];//a 和 b中的数乘,加上进位,再加上每个位置遗留的数c[t-1]
            p=sum/10;
            c[t-1]=sum%10;
        }
        while (p)
        {
            //还有进位,向前进一位
            c[t++]=p%10;
            p/=10;
        }
    }
    //消除前导0
    while(c[t]==0)
    {
        t--;
    }
    for(int i=t;i>=1;i--)
        cout<<c[i];
    return 0;
}

 

因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13738108.html

原文地址:https://www.cnblogs.com/BlairGrowing/p/13738108.html