Processing math: 100%
编程题
                ### 问题描述

在一次激烈的犯罪现场,鲁邦发现了一只神秘的密码盒,里面藏有重要的情报。然而,密码盒被一种复杂的加密系统保护着,只有通过一系列操作才能打开。

密码盒的加密系统是一个数字数组 A 和一个整数 X。系统允许鲁邦执行以下操作:

选择两个不同的索引 ij,并同时将 AiAj 设为 (AiAj)|X。其中 | 分别表示位异或和位或运算。

密码盒将在数组中所有元素都变为奇数的时候打开。鲁邦想要知道,最少需要进行多少次操作才能打开密码盒。如果无法打开密码盒,鲁邦需要知道这一情况,以便另寻他法。

请你帮助鲁邦计算出打开密码盒所需的最小操作次数。

输入格式

第一行包含两个由空格分隔的整数 NX,分别表示数字数组的大小和密码盒给定的整数。

接下来的一行包含 N 个由空格分隔的整数,表示数字数组 A 的元素。

数据范围保证:2N1050X<2300Ai<230

输出格式

输出打开密码盒所需的最小操作次数。如果无法打开密码盒,则打印 1

输入样例

5 4
2 3 4 17 9

输出样例

2

说明

鲁邦可以通过 2 次操作打开密码盒:

  • 在第一次操作中,鲁邦选择 i=1j=5。这里,(AiAj)|X=(29)|4=11|4=15。因此,新的数组变为 [15,3,4,17,15]
  • 在第二次操作中,鲁邦选择 i=4j=3。这里,(AiAj)|X=(174)|4=21|4=21。因此,新的数组变为 [15,3,21,21,15]

现在,密码盒打开了。可以证明鲁邦不能在少于 2 次操作的情况下打开密码盒。

查看答案
赣ICP备20007335号-2