範例程式碼 uva941

//uva941
#include <iostream>
#include <algorithm>

using namespace std;

int main(){

    long long int t, n, fac[21];
    string s;

    fac[0] = fac[1] = 1;
    for (int i = 2; i <= 20; i++)
        fac[i] = i * fac[i-1];
 
    cin >> t;
    while (t--){

        long long int used[26] = {0}, acc = 0, s_len, remain, idx;
        cin >> s >> n;
        sort(s.begin(), s.end());

        for (int r = s.size()-1; r >= 0; r--){
            idx = n / fac[r];
            n %= fac[r];
            cout << s[idx];
            s.erase(s.begin() + idx);
        }
        cout << "\n";
    }
}