CF1967C Fenwick Tree
题目描述
设 $\operatorname{lowbit}(x)$ 表示 $x$ 的二进制最低位的值,例如 $\operatorname{lowbit}(12)=4$,$\operatorname{lowbit}(8)=8$。
对于长度为 $n$ 的数组 $a$,若长度为 $n$ 的数组 $s$ 满足对于所有 $k$ 均有 $s_k=\left(\sum\limits_{i=k-\operatorname{lowbit}(k)+1}^{k}a_i\right)\bmod 998\,244\,353$,则称 $s$ 为 $a$ 的 *树状数组* ,记为 $s=f(a)$。
对于正整数 $k$ 和数组 $a$,定义 $f^k(a)$ 如下:
$$
f^k(a)=
\begin{cases}
f(a)&\text{若 }k=1\\
f(f^{k-1}(a))&\text{否则}\\
\end{cases}
$$
给定长度为 $n$ 的数组 $b$ 和正整数 $k$,请求出一个数组 $a$,满足 $0\le a_i < 998\,244\,353$ 且 $f^k(a)=b$。可以证明答案一定存在,若有多个解,输出任意一个即可。
输入格式
每个测试点包含多组测试数据。第一行输入测试数据组数 $t$($1\le t\le 10^4$)。
每组测试数据的第一行输入两个正整数 $n$($1 \leq n \leq 2\cdot 10^5$)和 $k$($1\le k\le 10^9$),分别表示数组长度和函数 $f$ 的复合次数。
第二行输入数组 $b_1, b_2, \ldots, b_n$($0\le b_i < 998\,244\,353$)。
保证所有测试数据的 $n$ 之和不超过 $2\cdot 10^5$。
输出格式
对于每组测试数据,输出一行包含一个合法的数组 $a$。
说明/提示
第一组测试数据中,可以验证 $f^1([1,1,1,1,1,1,1,1])=[1,2,1,4,1,2,1,8]$。
第二组测试数据中,可以验证 $f^2([1,2,3,4,5,6])=f^1([1,3,3,10,5,11])=[1,4,3,17,5,16]$。