1263: 【基础】【P1303】高精度乘

内存限制:32 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:24 解决:6

题目描述

高精度乘,求两个很大的非负整数相乘的结果。

输入

2个非负整数,每个一行,每个整数不超过240位。

输出

一个整数,表示相乘的结果。

样例输入 复制

514
495

样例输出 复制

254430

提示


#include<bits/stdc++.h>
using namespace std;
#define maxn 520
int a[maxn],b[maxn],c[maxn];
int main(){
    string A,B;
    cin>>A>>B;
    int lena,lenb,lenc;
    lena=A.length();
    lenb=B.length();
    for (int i=lena-1;i>=0;i--) {
    	a[lena-i]=A[i]-'0';
	}
    for (int i=lenb-1;i>=0;i--) {
    	b[lenb-i]=B[i]-'0';
	}
	for (int i=1;i<=lena;i++) {
		for (int j=1;j<=lenb;j++) {
			c[i+j-1]+=a[i]*b[j];
		}
	}
	lenc=lena+lenb;
	for (int i=1;i<=lenc;i++) {
		c[i+1]+=c[i]/10;
		c[i]=c[i]%10;
	}
	while (c[lenc]==0)
	    lenc--;	
	for (int i=max(1,lenc);i>=1;i--)
	    cout<<c[i];     
	return 0;
}