ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

高精度乘法模板(p1303)

高精度乘法模板(p1303)

P1303 A*B Problem

题目背景

高精度乘法模板题。

题目描述

给出两个非负整数,求它们的乘积。

输入格式

输入共两行,每行一个非负整数。

输出格式

输出一个非负整数表示乘积。

输入输出样例 #1

输入 #1

1 
2

输出 #1

2

说明/提示

每个非负整数不超过 \(10^{2000}\)

AC代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
char a[maxn],b[maxn];
int ai[maxn],bi[maxn],c[2*maxn];
int len;void gc(char a[],char b[]){int alen=strlen(a);int blen=strlen(b);for(int i=1;i<=alen;i++){ai[i]=a[alen-i]-'0';}for(int i=1;i<=blen;i++){bi[i]=b[blen-i]-'0';}for(int i=1;i<=alen;i++){for(int j=1;j<=blen;j++){c[i+j-1]+=ai[i]*bi[j];}}for(int i=1;i<alen+blen;i++){if(c[i]>9){c[i+1]+=c[i]/10;c[i]=c[i]%10;}}len=alen+blen;while(c[len]==0&&len>1){len--;}
}int main(){cin>>a>>b;gc(a,b);for(int i=len;i>=1;i--){cout<<c[i];}return 0;
}
返回列表