CF1967C.Fenwick Tree

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

设 lowbit⁡(x)\operatorname{lowbit}(x) 表示 xx 的二进制最低位的值,例如 lowbit⁡(12)=4\operatorname{lowbit}(12)=4,lowbit⁡(8)=8\operatorname{lowbit}(8)=8。

对于长度为 nn 的数组 aa,若长度为 nn 的数组 ss 满足对于所有 kk 均有 sk=(∑i=k−lowbit⁡(k)+1kai) mod 998 244 353s_k=\left(\sum\limits_{i=k-\operatorname{lowbit}(k)+1}^{k}a_i\right)\bmod 998\,244\,353,则称 ss 为 aa 的 树状数组 ,记为 s=f(a)s=f(a)。

对于正整数 kk 和数组 aa,定义 fk(a)f^k(a) 如下:

fk(a)={f(a)若 k=1f(fk−1(a))否则f^k(a)= \begin{cases} f(a)&\text{若 }k=1\\ f(f^{k-1}(a))&\text{否则}\\ \end{cases}

给定长度为 nn 的数组 bb 和正整数 kk,请求出一个数组 aa,满足 0≤ai<998 244 3530\le a_i < 998\,244\,353 且 fk(a)=bf^k(a)=b。可以证明答案一定存在,若有多个解,输出任意一个即可。

输入格式

每个测试点包含多组测试数据。第一行输入测试数据组数 tt(1≤t≤1041\le t\le 10^4)。

每组测试数据的第一行输入两个正整数 nn(1≤n≤2⋅1051 \leq n \leq 2\cdot 10^5)和 kk(1≤k≤1091\le k\le 10^9),分别表示数组长度和函数 ff 的复合次数。

第二行输入数组 b1,b2,…,bnb_1, b_2, \ldots, b_n(0≤bi<998 244 3530\le b_i < 998\,244\,353)。

保证所有测试数据的 nn 之和不超过 2⋅1052\cdot 10^5。

输出格式

对于每组测试数据,输出一行包含一个合法的数组 aa。

输入输出样例

  • 输入#1

    2
    8 1
    1 2 1 4 1 2 1 8
    6 2
    1 4 3 17 5 16

    输出#1

    1 1 1 1 1 1 1 1
    1 2 3 4 5 6

说明/提示

第一组测试数据中,可以验证 f1([1,1,1,1,1,1,1,1])=[1,2,1,4,1,2,1,8]f^1([1,1,1,1,1,1,1,1])=[1,2,1,4,1,2,1,8]。

第二组测试数据中,可以验证 f2([1,2,3,4,5,6])=f1([1,3,3,10,5,11])=[1,4,3,17,5,16]f^2([1,2,3,4,5,6])=f^1([1,3,3,10,5,11])=[1,4,3,17,5,16]。

输入解题思路,AI测评打分。不知道怎么写?

首页