求助只错了第四个点
查看原帖
求助只错了第四个点
309796
jknbhbuy楼主2021/5/20 11:33
#include<iostream>
#include<cstring>
using namespace std;

string ss;
char s[100005];	char sss[1000005];
int len;
int strcmpq(char s1[],char s2[]){
	for(int i=1;i<=len;i++){
		if(s1[i]>s2[i]){
			return 1;
		}
		if(s1[i]<s2[i]){
			return -1;
		}
	}
	return 0;
}
int pd(string s,int len){
	int l=0,r=len-1;
	while(l<=r){
		if(s[l]!=s[r])return 0;
		l++;
		r--;
	}
	return 1;
}
int pd2(string s,int len){
	int l=1,r=len;
	while(l<=r){
		if(s[l]!='9'||s[r]!='9')return 0;
		l++;
		r--;
	}
	return 1;
}
int cmp(char s[],int len){
	int l=1,r=len;
	for(int i=1;i<=len/2;i++){
		sss[i]=s[i];
	}
	if(len%2==0){
		while(l<=r){
			sss[r]=sss[l];
			l++;
			r--;
		}	
	}
	else {
		while(l<=r){
			sss[r]=sss[l];
			l++;
			r--;
		}
		sss[len/2+1]=s[len/2+1];
	}
	if(strcmpq(sss,s)==1){
		return 1;
	}
	else return 0;
}
int main(){
	cin>>ss;
	len=ss.length();
	for(int i=1;i<=len;i++){
		s[i]=ss[i-1];
	}
	s[0]='1';
	int flag=pd(ss,len);
	if(flag==0){
		if(cmp(s,len)){
			int l=1,r=len;
			while(l<=r){
				s[r]=s[l];
				l++;
				r--;
			}
			for(int i=1;i<=len;i++){
				cout<<s[i];
			}
		}
		else {
			int l=1,r=len;
			int index=len/2;
			while(index>=1){
				if(s[index]!='9'){
					break;
				}
				index--;
			}
			if(len%2!=0)index++;
			s[index]++;
			for(int i=index+1;i<=len/2;i++){
				s[i]='0';
			}
			while(l<=r){
				s[r]=s[l];
				l++;
				r--;
			}
			for(int i=1;i<=len;i++){
				cout<<s[i];
			}
		}
	}
	else {
		if(pd2(s,len)==0){
			/*s[1]++;*/
			int l=1,r=len;
			int index=len/2;
			if(len%2!=0)index++;
			while(index>=1){
				if(s[index]!='9'){
					break;
				}
				index--;
			}
			//if(index==1)index++;
			s[index]++;
			for(int i=index+1;i<=len/2;i++){
				s[i]='0';
			}
			while(l<=r){
				s[r]=s[l];
				l++;
				r--;
			}
			for(int i=1;i<=len;i++){
				cout<<s[i];
			}
		}
		else {
			cout<<1;
			for(int i=2;i<=len;i++){
				cout<<0;
			}
			cout<<1;
		}
	}
	return 0;
} 
2021/5/20 11:33
加载中...