本菜鸡不会任何算法,只会打暴力,有没有大佬帮忙看看,除了负数没考虑到还有啥别的问题
#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