Im_Joker @ 2023-12-02 22:28:31
一开始是这个代码:
#include<bits/stdc++.h>
using namespace std;
unsigned long long a[2001]={0},b[2001]={0},c[2001]={0},d[2001]={0};
int main(){
string n,m;
cin>>n>>m;
int c_a=2000,c_b=2000;
for(int i=n.size()-1;i>=0;i--){
a[c_a--]=n[i]-48;
}
for(int i=m.size()-1;i>=0;i--){
b[c_b--]=m[i]-48;
}
int g=0;
int c_c=2000;
for(int i=2000;i>=0;i--){
g=0;
memset(d,0,sizeof(d));
for(int j=2000;j>=0;j--){
d[j]+=b[j]*a[i];
d[j]+=g;
g=d[j]/10;
d[j]%=10;
}
g=0;
int c_c1=c_c;
for(int j=2000;j>=0;j--){
c[c_c1]+=d[j]+g;
g=c[c_c1]/10;
c[c_c1]%=10;
c_c1--;
}
c_c--;
}
int w;
bool flag=true;
for(int i=0;i<=2000;i++){
if(c[i]!=0){
w=i;
flag=false;
break;
}
}
if(flag){
cout<<0;
return 0;
}
for(;w<=2000;w++){
cout<<c[w];
}
return 0;
}
结果#5 WA了。
修改后的代码:
#include<bits/stdc++.h>
using namespace std;
unsigned long long a[2001]={0},b[2001]={0},c[4001]={0},d[2001]={0};
int main(){
string n,m;
cin>>n>>m;
int c_a=2000,c_b=2000;
for(int i=n.size()-1;i>=0;i--){
a[c_a--]=n[i]-48;
}
for(int i=m.size()-1;i>=0;i--){
b[c_b--]=m[i]-48;
}
int g=0;
int c_c=4000;
for(int i=4000;i>=0;i--){
g=0;
memset(d,0,sizeof(d));
for(int j=4000;j>=0;j--){
d[j]+=b[j]*a[i];
d[j]+=g;
g=d[j]/10;
d[j]%=10;
}
g=0;
int c_c1=c_c;
for(int j=4000;j>=0;j--){
c[c_c1]+=d[j]+g;
g=c[c_c1]/10;
c[c_c1]%=10;
c_c1--;
}
c_c--;
}
int w;
bool flag=true;
for(int i=0;i<=4000;i++){
if(c[i]!=0){
w=i;
flag=false;
break;
}
}
if(flag){
cout<<0;
return 0;
}
for(;w<=4000;w++){
cout<<c[w];
}
return 0;
}
结果全部RE了。
求dalao帮忙
by lzm0107 @ 2023-12-02 23:37:11
数组开大
by Im_Joker @ 2023-12-02 23:57:12
Thank you very much!