Rinne 最近学习了位运算相关的知识,她想运用自己学习的知识发明一个加密算法,首先她有一个源数组 A,还有一个密钥数组 B,现在她想生成加密后的数组 C,C_i = C_{i-1} + A_i xor B_i + . 现在她想用程序来实现这个过程,你能帮帮她吗?由于输出可能太大,你只需要输出每个
Rinne 最近学习了位运算相关的知识,她想运用自己学习的知识发明一个加密算法。 首先她有一个源数组 A,还有一个密钥数组 B,现在她想生成加密后的数组 C。 她发明的方法是:当计算 C_i C i 的时候,首先将 C_i C i 赋值为 C_{i-1} C i−1 ,然后加上 A_i A i 分别与每一个满足 j < i 的 B_j B j 异或后的和,然后加上 B_i B i 分别与每一个满足 j < i 的 A_j A j 异或后的和,最后加上 A_i A i 与 B_i B i 的异或和。 形式化的讲,关于 C_i C i 的递推式为以下式子: C_0 = 0 C =0 C_i = C_{i-1} + A_i xor B_i + (sum_{j=1}^{i-1} (A_i xor B_j + A_j xor B_i)) C i =C i−1 +A i xorB i +(∑ j=1 i−1 (A i xorB j +A j xorB i )) 现在她想用程序来实现这个过程,你能帮帮她吗?由于输出可能太大,你只需要输出每个 C_i C i 模 10^9+7 10 9 +7的结果即可。