跳转至

Grox的序列四

  • 参考时间限制:1.0 秒。
  • 实际时限:标准程序在目标环境的最慢用例中位耗时乘以 2,再按 0.5 秒向上取整。
  • 内存限制:1024 MB。
  • 参考评测环境与测量

背景故事

知识可以透过探索、观察、收集经验资料、推论、假说和假说实验等过程来获得。

——科学之书3(《Spore》,英文资料)

解决了第二道序列问题后,Grox 发现了一种神奇的算法,能够生成一种神奇的序列。这次,序列的构造同时用到了按位异或、按位或与按位与。

Grox 想知道这个序列的值,但为了避免输出过多,只请你计算三个汇总值。

形式化问题描述

给定非负整数 \(n\) 和两组整数 \(a_0,\ldots,a_n\) 、\(b_0,\ldots,b_n\) .令 \(P=1004535809\) .

对 \(0\le t\le n\) ,定义

\[ C_t=\sum_{\substack{0\le i,j\le n\\i+j\le n\\i\mathbin{\mathrm{XOR}}j=t}}a_i b_j+\sum_{\substack{0\le i,j\le n\\i+j\le n\\i\mathbin{\mathrm{OR}}j=t}}a_i b_j+\sum_{\substack{0\le i,j\le n\\i+j\le n\\i\mathbin{\mathrm{AND}}j=t}}a_i b_j \]

\(\mathrm{XOR}\) 、\(\mathrm{OR}\) 、\(\mathrm{AND}\) 分别表示按位异或、按位或、按位与。三个求和各自计数;同一有序数对可在不同求和中贡献。

对 \(r=0,1,2\) ,计算

\[ V_r=\left(\sum_{\substack{0\le t\le n\\t\equiv r\pmod3}}C_t\right)\bmod P \]

空和为 \(0\) .输出每个结果的最小非负余数。

输入格式

第一行一个整数 \(n\) .第二行 \(n+1\) 个整数 \(a_0,\ldots,a_n\) ;第三行 \(n+1\) 个整数 \(b_0,\ldots,b_n\) .

输出格式

输出三行,依次为 \(V_0,V_1,V_2\) .

样例

样例 1

输入

2
1 2 3
3 2 1

输出

31
24
20

样例 2

输入

0
2
3

输出

18
0
0

样例 3

输入

3
1 0 2 3
0 4 1 0

输出

29
8
2

样例解释

样例一中 \(C_0=31,C_1=24,C_2=20\) .样例二中,唯一数对在三个求和中各贡献 \(6\) ,所以 \(V_0=18\) .

数据范围与保证

对 100% 数据:

\(0\le n\le2^{20}-1\) ;\(0\le a_i,b_i\le10^9\) .

分值比例 额外条件
100% 无额外条件