P8944 The Da Vinci Code

题目背景

> 圣杯在罗斯琳教堂下静待。 > 大师杰作掩映中相拥入眠。 > 剑刃圣杯守护着她的门宅。 > 星空下她可安息无碍。 好的题目不需要花里胡哨的背景。

题目描述

给定一个长度为 $n$ 的数列 $a$,初始情况下 $a_i=i$。 另有一个取值在 $[1,n]$ 内的随机的整数 $x$,它取 $i$ 的概率为 $b_i$。 接下来进行 $k$ 次操作,每次**均匀随机**地选两个 $[1,n]$ 中的整数 $i,j$(允许 $i=j$),交换 $a_i,a_j$ 的值(如果 $i=j$ 则什么也不干)。问最后 $x$ 在位置 $i$ 上的概率,你需要对所有 $1\leq i\leq n$ 求出答案。你需要输出答案模 $3221225473$ 的值。 我们定义 $x$ 在位置 $i$ 上指 $a_i=x$。

输入格式

一行三个整数 $n,k,seed$。接下来使用如下代码生成 $b_i$: ```cpp #include typedef unsigned long long ull; typedef unsigned int uint; typedef long long ll; const uint mod = 3221225473u; const int N = 20000010; ull seed; ull getnext() { seed ^= seed > 17; seed ^= seed

输出格式

设 $ans_i$ 表示 $x$ 在位置 $i$ 上的概率模 $3221225473$,则输出 $ans_i\times i$ 的异或和。

说明/提示

#### 【样例解释】 对于样例 #1: $b$ 数组为 $\{2134949164 ,1086276310\}$,操作 $9$ 次后 $x$ 在两个位置的概率均为 $\dfrac12$。 对于样例 #2: $b$ 数组为 $\{1863763622,1043615898,1055155266,1556793106,1763540175,1239801170,1141007183\}$。 #### 【数据范围】 对于 $100\%$ 的数据: * $2\leq n\leq2\times10^7$,$0\leq k,seed