#C1024. 环形传送带的校验值 (conveyorchecksum)
环形传送带的校验值 (conveyorchecksum)
题目描述
实验室里有一条首尾相接的传送带,上面依次放着 个数据盒。工程师把当前从左到右看到的序列记为 ,并定义它的校验值为相邻两个数据盒编号异或后的总和:
$$(a_1 \mathbin{\mathrm{xor}} a_2)+(a_2 \mathbin{\mathrm{xor}} a_3)+\cdots+(a_{n-1} \mathbin{\mathrm{xor}} a_n)$$传送带每向右转动一次,最右端的数据盒会移动到最左端。例如 [4, 5, 1, 2] 右转一次后变为 [2, 4, 5, 1]。
现在会依次进行 轮操作。第 轮会让传送带连续右转 次,且每一轮都建立在上一轮结束后的状态上。请输出初始状态以及每轮结束后的校验值。
输入格式
在文件 conveyorchecksum.in 中读入。
第一行输入两个正整数 ,表示序列长度和操作轮数。
第二行输入 个正整数 。
接下来输入 个正整数 。这些数可以分布在一行或多行中。
输出格式
在文件 conveyorchecksum.out 中输出。
输出 个整数,用空格隔开。
第一个整数表示初始序列的校验值,之后第 个整数表示第 轮操作结束后的校验值。
样例
样例输入 #1
5 3
1 2 3 4 5
1 1 2
样例输出 #1
12 15 9 13
样例输入 #2
5 5
10 13 2 5 6
4
1
5
1
2
样例输出 #2
32 37 32 32 41 29
数据范围
- 对于 的数据,满足 。
- 对于另外 的数据,满足 。
- 对于 的数据,满足 ,。
Related
In following contests: