大数乘法

来源:互联网 发布:linux 创建文件 编辑:程序博客网 时间:2024/06/06 09:22
1027 大数乘法
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A第2行:大数B(A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456234567
Output示例
28958703552
#include <iostream>#include <cstring>#include <stdlib.h>#include <stdio.h>#include <math.h>using namespace std;typedef long long ll;int main(){    string a,b;    int c[2005],d[2005],e[4010];    cin>>a>>b;    memset(c,0,sizeof(c));    memset(d,0,sizeof(d));    memset(e,0,sizeof(e));    int len1=a.length();    int len2=b.length();    int k=0;    for(int i=len1-1;i>=0;i--)    {        c[i]=int(a[k]-'0');k++;    }    k=0;    for(int i=len2-1;i>=0;i--)    {        d[i]=int(b[k]-'0');k++;    }    for(int i=0;i<len1;i++)    {       for(int j=0;j<len2;j++)       {           e[i+j]=c[i]*d[j]+e[i+j];       }    }    for(int i=0;i<len1+len2;i++)    {        e[i+1]=e[i]/10+e[i+1];        e[i]=e[i]%10;    }    int flag;    for(int i=4009;i>=0;i--)    {        if(e[i]!=0)        {            flag=i;break;        }    }    for(int i=flag;i>=0;i--)    {        cout<<e[i];    }    return 0;}

0 0
原创粉丝点击