社区讨论
求助
P13435 [GCJ 2009 #1B] The Next Number参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mditqr7z
- 此快照首次捕获于
- 2025/07/25 20:55 7 个月前
- 此快照最后确认于
- 2025/07/25 21:23 7 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int read(){
int k=0,f=1;
char c=getchar();
while(c<'0' || c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') k=k*10+c-'0',c=getchar();
return k*f;
}
string solve(string s){
bool flag=false;
int n=s.size();
for (int i=n-2;i>=0;i--){
if (s[i]<s[i+1]){
flag=true;
int j=n-1;
while (s[j]<=s[i]){
j--;
}
swap(s[i],s[j]);
reverse(s.begin()+i+1,s.end());
break;
}
}
if (!flag){
sort(s.begin(),s.end());
int pre=0;
while (pre<s.size() && s[pre]=='0') pre++;
if (pre<s.size()){
swap(s[0],s[pre]);
sort(s.begin()+1,s.end());
}
}
return s;
}
int main(){
int T,i=1;
T=read();
while (T--){
string n;
cin>>n;
cout<<"Case #"<<i<<": "<<solve(n)<<endl;
i++;
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...