啊,洛谷上的高精度题还是不少。我又发现了一道高精度乘法的题——P1303 A*B Problem。
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
输入输出样例
输入 #1复制
1 2
输出 #1复制
2
说明/提示
每个非负整数不超过 。
不超过那就真是个大数。
程序苏醒了:
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[2001],b[2001],ans[3002];
int main(){
cin>>s1>>s2;
for(int i=0;i<s1.size();i++) a[i]=s1[s1.size()-i-1]-'0';
for(int i=0;i<s2.size();i++) b[i]=s2[s2.size()-i-1]-'0';
int maxl=s1.size()+s2.size(),max1=s1.size(),max2=s2.size();
for(int i=0;i<max1;i++){
for(int j=0;j<max2;j++){
ans[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<maxl;i++)
{
if(ans[i]>9){
ans[i+1]+=ans[i]/10;
ans[i]%=10;
}
}
while(ans[maxl]==0&&maxl>0) maxl--;
for(int i=maxl;i>=0;i--) cout<<ans[i];
return 0;
}