#1726. 珅泽教育CSP-J第一轮模拟考第七套 第 30 题
珅泽教育CSP-J第一轮模拟考第七套 第 30 题
第3题
long long k;
int n;
int p[20];
bool used[20] = {false};
long long frac[20];
void gen(int i)
{
if (i > n)
{
for (int i = 1; i <= n; ++i) std::cout << p[i] << " ";
return;
}
for (int a = 1; a <= n; ++a)
if (not used[a]) {
if (k <= frac[n-i]) {
p[i] = a;
used[a] = true;
gen(i+1);
return;
}
else {
k -= frac[n-i];
}
}
}
int main()
{
n = 1;
frac[0] = frac[1] = 1;
std::cin >> k;
while (k > frac[n]) {
k -= frac[n];
frac[n+1] = frac[n] * (n+1);
n++;
}
gen(1);
}
当输入 k 为 1 时候,输出 1。
{{ select(1) }}
- 正确
- 错误