社区讨论

求助

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 条回复,欢迎继续交流。

正在加载回复...