求助
查看原帖
求助
1048576
New_Void楼主2025/7/25 20:54
#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;
}

2025/7/25 20:54
加载中...