最后一个怎么搞?
查看原帖
最后一个怎么搞?
1192776
Im_Joker楼主2023/12/2 22:28

一开始是这个代码:

#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帮忙

2023/12/2 22:28
加载中...