#P10818. [EC Final 2020] Random Shuffle
[EC Final 2020] Random Shuffle
Description
庞教授正在选择晋级世界总决赛的队伍。由于地区赛被取消,他使用随机打乱来对队伍进行排名。总共有 支队伍。他的代码如下:
uint64_t x;//uint64_t 表示 64 位无符号整数
int n;
uint64_t rand() {//这是一个异或移位随机生成器
x ^= x << 13;
x ^= x >> 7;
x ^= x << 17;
return x;
}
int main() {
cin >> n;
cin >> x;
for (int i = 1; i <= n; i++) {//随机打乱 [1, 2,..., n]
a[i] = i;
swap(a[i], a[rand() % i + 1]);
}
for (int i = 1; i <= n; i++) {//打印结果
cout << a[i] << (i == n ? '\n' : ' ');
}
}
他编译并运行了他的代码,然后输入了 和某个特殊的非负整数 。他将结果打印在纸上。 一天后,庞教授忘记了他选择的 。给定代码的结果和整数 。请恢复庞教授输入的数字 。
Input Format
第一行包含一个整数 () —— 队伍的数量。 下一行包含 个整数 —— 庞教授代码打印的结果。保证结果是正确的,即存在一个整数 () 导致该结果。
Output Format
输出庞教授输入的整数 ()。如果有多个可能的 ,输出其中任意一个。
50
36 22 24 21 27 50 28 14 25 34 18 43 47
13 30 7 10 48 20 16 29 9 8 15 3 31 12
38 19 49 37 1 46 32 4 44 11 35 6 33 26
5 45 17 39 40 2 23 42 41
16659580358178468547
Hint
注意样例输入的第二行被换行以适应页面宽度。(由 ChatGPT 4o 翻译)
京公网安备 11011102002149号