1. 程式人生 > 其它 >AtCoder Beginner Contest 215 C - One More aab aba baa

AtCoder Beginner Contest 215 C - One More aab aba baa

又來寫一些蒻基題的蒻基題解
題目傳送門

題目(翻譯過了哦)

找出字串 \(S\) 按字典排序的第 \(K\) 個字串。

資料約定

\(1\leqslant\vert S\vert\leqslant 8\)
保證 \(S\) 由小寫字母組成。
\(S\) 的字典排序至少有 \(K\) 個可能。

輸入案例

S K

樣例輸入1

aab 2

樣例輸出1

aba

樣例輸入2

baba 4

樣例輸出2

baab

樣例輸入3

ydxwacbz 40320

樣例輸出3

zyxwdcba

題目解析

這裡要用到一個不常用但很好用的函式:

next_permutation();

那這個函式是什麼呢?要怎麼用呢?
全排列函式,時間複雜度 \(O(1)\)

orz
超級快,官方的題解第二個版本也用了一樣的程式碼

放上程式碼

#include<bits/stdc++.h>//萬能標頭檔案
using namespace std;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);//取消同步流
	string s;int k;
	cin>>s>>k;
	sort(s.begin(),s.end());
	while(k-->1) next_permutation(s.begin(),s.end());//全排列
	cout<<s;
	return 0;
}//完結撒花