社区讨论

90分 WA#9

P1609最小回文数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lr1uvdl0
此快照首次捕获于
2024/01/06 17:21
2 年前
此快照最后确认于
2024/01/06 20:34
2 年前
查看原帖
CPP
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool b;
void print(string s){
	cout<<s;
	if(b)s.pop_back();
	reverse(s.begin(),s.end());
	cout<<s;
}
bool check(string s){
	for(char c:s)
		if(c!='9')return 0;
	return 1;
}
signed main() {
	string s,s1,s2;
	cin>>s;
	b=s.length()&1;
	s1=s.substr(0,(s.length()+1)/2);
	s2=s.substr(s.length()/2,(s.length()+1)/2);
	reverse(s2.begin(),s2.end());
	if(s1>s2)print(s1);
	else{
		if(check(s1)){
			cout<<1;
			for(int i=1;i<s.length();++i)cout<<0;
			cout<<1;
		}
		else{
			++s1.back();
			for(int i=s1.length()-1;i>=0;--i)
				if(s1[i]>'9'){
					s1[i]-=10;
					++s1[i-1];
				}
			print(s1);
		}
	}
	return 0;
}
求助

回复

0 条回复,欢迎继续交流。

正在加载回复...