题目描述
高精度乘,求两个很大的非负整数相乘的结果。
输入
2个非负整数,每个一行,每个整数不超过240位。
输出
一个整数,表示相乘的结果。
样例输入
1111111111111111111111111 2222222222222222222222222
输出
2469135802469135802469135308641975308641975308642
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int i,j,n,a[300],b[300],c[600];
int main(){
cin>>s1>>s2;
//将数字逆序存入列表
for(i=0;i<s1.size();i++){
a[i]=s1[s1.size()-i-1]-48;
}
for(i=0;i<s2.size();i++){
b[i]=s2[s2.size()-i-1]-48;
}
for(i=0;i<s2.size();i++){
for(j=0;j<s1.size();j++){
c[i+j]+=a[j]*b[i];
if(c[i+j]>=10){
c[i+j+1]+=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
}
for(i=s1.size()+s2.size();i>=0;i--){
if(c[i]!=0){
n=i;
break;
}
}
if(n!=0){
for(i=i;i>=0;i--){
cout<<c[i];
}
}else{
cout<<0;
}
}