Koxia 与序列
题目描述
Mari 有三个整数 n、x 和 y。
如果一个长度为 n 的非负整数数组 a 满足以下条件,则称其为“好数组”:
- a1+a2+…+an=x;
- a1∣a2∣…∣an=y,其中 ∣ 表示按位或运算。
一个好数组的得分定义为 a1⊕a2⊕…⊕an,其中 ⊕ 表示按位异或运算。
Koxia 想让你求出所有好数组得分的总异或值。如果不存在好数组,则输出 0。
输入格式
输入的第一行包含三个整数 n、x 和 y(1≤n<240,0≤x<260,0≤y<220)。
输出格式
输出一个整数,表示所有好数组得分的总异或值。
样例输入 1
3 5 3
样例输出 1
2
样例输入 2
100 0 100
样例输出 2
0
样例输入 3
79877974817 749875791743978 982783
样例输出 3
64
提示
在第一个测试用例中,总共有 12 个好数组,如下所示:
- [0,2,3]、[0,3,2]、[2,0,3]、[2,3,0]、[3,0,2] 和 [3,2,0] —— 得分为 0⊕2⊕3=1;
- [1,2,2]、[2,1,2] 和 [2,2,1] —— 得分为 1⊕2⊕2=1;
- [1,1,3]、[1,3,1] 和 [3,1,1] —— 得分为 1⊕1⊕3=3。
因此,总异或值为 $\underbrace{1 \oplus \ldots \oplus 1}_{9\text{ 次}} \oplus 3 \oplus 3 \oplus 3 = 2$。
在第二个测试用例中,没有好数组,输出应为 0。
数据范围
1≤n<240,0≤x<260,0≤y<220。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
20 |
n≤6,x≤50,y<23 |
| 2 |
40 |
y<213 |
| 3 |
无特殊限制 |