#arc152e. [arc152_e]Xor Annihilation
[arc152_e]Xor Annihilation
问题描述
在数轴上,坐标为的位置上有个小球,第个小球的重量为。这里,是到之间整数的排列。你需要选择一个不超过的非负整数,并将重量附加到坐标为的每个位置上。然后,小球们将同时开始移动,规则如下:
- 每个时间点,假设是位于小球坐标右侧的小球和附加重量的重量的异或和,是位于小球坐标左侧的小球和附加重量的重量的异或和。如果,小球向右以每秒的速度移动;如果,小球向左以每秒的速度移动;如果,小球静止不动。
- 如果有多个小球存在于同一坐标上(例如,从左边和右边来的两个小球到达同一坐标),这些小球将合并为一个小球,其重量为它们以前重量的异或和。
有多少个的值使得所有小球在秒内静止不动?
什么是异或运算()?
非负整数和的二进制异或运算定义如下:
- 当表示为二进制形式时,第位()是当且仅当和的第位中只有一位是,否则为。
例如,(二进制形式为:)。
通常,个非负整数的异或运算被定义为$(\\dots ((p_1 \\oplus p_2) \\oplus p_3) \\oplus \\dots \\oplus p_k)$,并且可以证明与的顺序无关。
约束条件
- ,其中。
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入给出:
输出
输出一个整数作为答案。
示例一
2
1 2 3
示例一输出
1
我们将重量为的小球简称为。
如果,例如,和首先向右移动,向左移动。然后,当和碰撞并合并为一个小球时,它开始向左移动。随后,当所有从到的小球合并为一个小球时,它静止不动。因此,满足条件。
另一方面,如果,那么和将继续向左移动,将继续向右移动,朝着附加重量移动约秒。因此,不满足条件。
结果表明,只有是满足条件的值,因此应该输出。
示例二
3
7 1 2 3 4 5 6
示例二输出
2