为什么不对!!!
查看原帖
为什么不对!!!
1129659
Kevin626楼主2024/5/19 09:43

本菜鸡不会任何算法,只会打暴力,有没有大佬帮忙看看,除了负数没考虑到还有啥别的问题

#include<bits/stdc++.h>
using namespace std;

int n=10;
string a,b;
string operator+(string d,string p) {
	int sa=d.length(),sb=p.length();
	int a[505],b[505];
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	for(int i=0; i<sa; i++)
		if(d[sa-1-i]<='9'&&d[sa-1-i]>='0')a[i]=d[sa-1-i]-'0';
		else a[i]=d[sa-1-i]-87;
	for(int i=0; i<sb; i++)
		if(p[sb-1-i]<='9'&&p[sb-1-i]>='0')b[i]=p[sb-1-i]-'0';
		else b[i]=p[sb-1-i]-87;
	int len=max(sa,sb);
	int ans[505];
	memset(ans,0,sizeof(ans));
	for(int i=0; i<len; i++) {
		ans[i]+=a[i]+b[i];
		if(ans[i]>=n) {
			ans[i]-=n;
			ans[i+1]++;
		}
	}
	string turn="";
	if(ans[len]==0)len--;
	for(int i=len; i>=0; i--) {
		char ch=char(ans[i]+'0');
		if(ch<='9'&&ch>='0')turn+=char(ch);
		else turn+=char(ch-'0'+87);
	}
	return turn;
}
int len(string xx){
	int ret=0;
	for(int i=1;xx[i]!='\0';i++){
		ret++;
	}
	return ret;
}
bool operator>(string d,string p){
	if(len(d)!=len(p))return len(d)<len(p);
	else return d<p;
}
string s_turn(int k){
	string anss="";
	while(k>0){
		anss+=k%10+'0';
		k/=10;
	}
	return anss;
}
int ss_turn(string k){
	int anss=0;
	for(int i=1;i<=len(k);i++){
		anss=anss*10+(k[i]-'0');
	}
	return anss;
}
string suan_a(int num,int ret){        //递归a 
	if(s_turn(ret+num)>a){
		ret+=num-(num-(ss_turn(a)-ret));
		return s_turn(ret);
	}
	ret+=num;
	return suan_a(num+1,ret); 
}
string suan_b(int num,int ret){        //递归b 
	if(s_turn(ret+num)>b){
		ret+=num=(num-(ss_turn(b)-ret));
		return s_turn(ret);
	}
	ret+=num;
	return suan_b(num+1,ret); 
}

int main() {
	cin>>a;
	string ta=a;
//	getchar();
	cin>>b;
	string tb=b;
	string sum="0";
	for(int i=1; i<=2; i++) {
		switch(i) {
			case 1: {
				sum=sum+suan_a(1,ss_turn(sum));
			}
			case 2: {
				sum=sum+suan_b(1,ss_turn(sum));
			}
		}
	}
	cout<<sum;
	return 0;
}

//a+b
2024/5/19 09:43
加载中...