HuangGuangWu666 @ 2023-07-30 20:33:15
#include<bits/stdc++.h>
using namespace std;
int main(){
string A,B;
cin>>A>>B;
int a[2050]={},b[2050]={},c[2050]={};
for(int i=A.size()-1,j=1;i>=0;i--,j++){
a[j]=A[i]-'0';
}
for(int i=B.size()-1,j=1;i>=0;i--,j++){
b[j]=B[i]-'0';
}
for(int i=1;i<=A.size();i++){
for(int j=1;j<=B.size();j++){
c[i+j-1]=a[i]*b[j];
}
}
int len=A.size()+B.size();
for(int i=1;i<=len;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
for(;!c[len];){
len--;
}
for(int i=max(1,len);i>=1;i--){
cout<<c[i]<<endl;
}
return 0;
}
by gtafics @ 2023-07-30 20:55:07
@HuangGuangWu666 目前找出来的错误:
第 6 行,c[2050]
应改为c[4050]
,解决 #5 RE。原因:两数相乘的积有可能达到两数位数之和,即 4000 位。
第 15 行,c[i+j-1]=a[i]*b[j];
应改为c[i+j-1]+=a[i]*b[j];
,解决 #2-#5 WA 的部分问题。原因:每一位会和两个数中多对数字乘积相关联。例如
第 27 行,cout<<c[i]<<endl;
应改为cout<<c[i];
,解决 #2-#5 WA 的另一部分问题。
全代码测试已经AC。
by HuangGuangWu666 @ 2023-07-30 20:58:10
感谢 !!!!@gtafics