排列
time limit:1000ms
memory limit:30000k
total submissions:9466
accepted:4183
description
題目描述:
大家知道,給出正整數n,則1到n這n個數可以構成n!種排列,把這些排列按照從小到大的順序(字典順序)列出,如n=3時,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六個排列。
任務描述:
給出某個排列,求出這個排列的下k個排列,如果遇到最後乙個排列,則下1排列為第1個排列,即排列1 2 3…n。
比如:n = 3,k=2 給出排列2 3 1,則它的下1個排列為3 1 2,下2個排列為3 2 1,因此答案為3 2 1。
input
第一行是乙個正整數m,表示測試資料的個數,下面是m組測試資料,每組測試資料第一行是2個正整數n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n個正整數,是1,2 … n的乙個排列。
output
對於每組輸入資料,輸出一行,n個數,中間用空格隔開,表示輸入排列的下k個排列。
sample input
3sample output3 12 3 1
3 13 2 1
10 2
1 2 3 4 5 6 7 8 9 10
3 1 2source1 2 3
1 2 3 4 5 6 7 9 8 10
qinlu@poj
原來next_permutation可以這樣用。。
source code
problem:1833
user:bingshen
memory:148k
time:485ms
language:c++
result:accepted
STL常用容器(七)set multiset容器
簡介 本質 set和multiset區別 功能描述 建立set容器以及賦值 構造 賦值 include void printset set int s cout endl 構造和賦值 void test01 intmain 總結 功能描述 函式原型 include void printset set...
POJ1091 跳蚤 容斥
解題報告 設數字分別為a1 a2,a3 m 那麼若方程x1 a1 x 2a2 xn 1m 1有解 則這張卡片可行。而此方程有解的充要條件為gc d a1 a2,a3 m 1 所以本題即為求gc d a1 a2,a3 m 1 1 a 1,a2 a3 an m 的方案數。那麼可以反著求gc d a1 a...
poj2773 容斥原理
這個題的意思是給你兩個數m,k,讓你求出與m互質的第k個數,設想對於乙個數r,我們可以求出小於等於r與m互質的數的個數,那麼我們就可以使用二分很快的求解。假設我們把m唯一分解 m p1 a1 p2 a2 pi ai,那麼小於等於r與m互質的數中不應該有p1 p2 pi這些因子,因此問題轉化成求解小於...