WA求调
  • 板块P1303 A*B Problem
  • 楼主hzc0829
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/26 20:56
  • 上次更新2024/6/27 10:12:46
查看原帖
WA求调
1279263
hzc0829楼主2024/6/26 20:56

代码(WA on #4,#5):

#include<bits/stdc++.h>
using namespace std;
string BigPlus(string a,string b){
	while(a[0]=='0'&&a.size()>1){
		a.erase(0,1);
	}
	while(b[0]=='0'&&a.size()>1){
		b.erase(0,1);
	}
	int maxlen=max(a.size(),b.size())-1;
	if(a.size()-1==maxlen){
		while(b.size()-1<maxlen){
			b='0'+b;
		}
	}else{
		while(a.size()-1<maxlen){
			a='0'+a;
		}
	}
	bool f=0;
	string c="";
	for(int i=maxlen;i>=0;i--){
		int temp=a[i]+b[i]-96;
		if(f){
			temp++;
		}
		if(temp>=10){
			f=1;
			temp-=10;
		}else{
			f=0;
		}
		char num=(char)(temp+48);
		c=num+c;
		if(f==1&&i==0){
			c="1"+c;
		}
	}
	while(c[0]=='0'&&a.size()>1){
		c.erase(0,1);
	}
	return c;
}
string a,b,c="0";
int main(){
	cin>>a>>b;
	if(a=="0"||b=="0"){
		cout<<0;
		return 0;
	}
	while(a[0]=='0'&&a.size()>1){
		a.erase(0,1);
	}
	while(b[0]=='0'&&a.size()>1){
		b.erase(0,1);
	}
	int cnt=-1;
	for(int i=b.size()-1;i>=0;i--){
		cnt++;
		string temp="";
		int nowb=b[i]-48;
		int carry=0;
		for(int i=a.size()-1;i>=0;i--){
			int nowa=a[i]-48;
			int nowans=nowb*nowa;
			if(carry){
				nowans+=carry;
			}
			if(nowans>10){
				carry=nowans/10;
				nowans%=10;
			}else{
				carry=0;
			}
			char num=(char)(nowans+48);
			temp=num+temp;
			if(i==0&&carry){
				temp=(char)(carry+48)+temp;
			}
		}
		int tempcnt=cnt;
		while(tempcnt--){
			temp=temp+"0";
		}
		c=BigPlus(c,temp);
	}
	while(c[0]=='0'&&a.size()>1){
		c.erase(0,1);
	}
	cout<<c;
	return 0;
}
2024/6/26 20:56
加载中...