permutation 1

题目链接

题意

找出一个n的全排列,让其后向差分序列字典序最小。

思路

1≤K≤min(10000,n!),注意到这一点,我们可以知道当n大于8的时候,我们前面几项应该是n,1,2,3,4,…直到最后八项。
最后八项怎么确定呢,看到这个k范围很小,不妨枚举出所有全排列,然后排个序去找第k大。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

using namespace std;
typedef long long ll;
#ifndef ONLINE_JUDGE
#define dbg(x...)
do
{
cout << "