问题描述
高精度乘,求两个很大的非负整数相乘的结果。
输入
2 个非负整数,每个一行,每个整数不超过 240 位。
输出
一个整数,表示相乘的结果。
样例
输入
1111111111111111111111111 2222222222222222222222222
输出
2469135802469135802469135308641975308641975308642
编辑代码
语言 C++
代码:
#include <bits/stdc++.h>
#include<string>
#include<algorithm>
using namespace std;
int main(){
int t=0,i,j,d,a[32767]={},b[32767]={},c[32767]={},e[32767]={};
int l,l1;
string s,s1,result;
cin>>s>>s1;
l=s.size();
l1=s1.size();
for(i=0;i<=l-1;i++){
a[i]=s[l-1-i]-'0';
}
for(i=0;i<=l1-1;i++){
b[i]=s1[l1-1-i]-'0';
}
for(i=0;i<=l-1;i++){
for(j=0;j<=l1-1;j++){
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
d=l+l1;
for(i=d;i>=0;i--){
if(c[i]==0&&d>=1){
d--;
}
else{
break;
}
}
for(i=d;i>=0;i--){
result += char(c[i]+'0');
}
cout<<result;
}