【基础】高精度乘
题目描述
高精度乘,求两个很大的非负整数相乘的结果。
输入
2个非负整数,每个一行,每个整数不超过240位。
输出
一个整数,表示相乘的结果。
样例输入复制
1111111111111111111111111 2222222222222222222222222
样例输出复制
2469135802469135802469135308641975308641975308642
#include <bits/stdc++.h>
using namespace std;
string cheng(string s1,string s2){
char s3[300];
memset(s3,'0',300);
if(s1.length()<s2.length()){
swap(s1,s2);
}
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int len2=s2.length();
int len1=s1.length();
for(int i=0;i<len2;i++){
int jin=0;
for(int j=0;j<len1;j++){
int t=(s2[i]-'0')*(s1[j]-'0')+jin+(s3[j+i]-'0');
s3[j+i]=t%10+'0';
jin=t/10;
}
if(jin>0){
s3[len1+i]=jin+'0';
}
}
int t=299;
string ss="";
while(s3[t]=='0'){
t--;
}
for(int i=t;i>=0;i--){
ss=ss+s3[i];
}
return ss;
}
int main(int argc, char** argv) {
//freopen("abc.txt","r",stdin);
string s1,s2;
cin>>s1>>s2;
cout<<cheng(s1,s2);
return 0;
}