CodeForces 940 C. Phone Numbers 字符串构造

http://codeforces.com/contest/940/problem/C

限定字符集,求长度为k的,字典序比给定长度为n的字符串大的最小的字符串。

①k>n时,在原串后补上最小的字符。

②k<=n时,答案为原串的前k位+1,即比原串k位前缀大的第一个字符串。


#include 

using namespace std;

int n,k;
string str;
set <char> s;

int main(){

    cin >> n >> k;
    cin >> str;
    for (int i=0;iif (k>n){
        cout << str;
        for (int i=0;icout << *s.begin();
        }
    }
    else{
        for (int i=k-1;i>=0;i--){
            if (str[i]!=*s.rbegin()){
                for (int j=0;jcout << str[j];
                }
                cout << *s.upper_bound(str[i]);
                for (int j=i+1;jcout << *s.begin();
                }
                break;
            }
        }
    }
}

你可能感兴趣的:(———字符串————)