Logo Wy Online Judge

WyOJ

#579. 颜料购买

题目描述

丹妮卡是一名画家,她想要作画,但目前没有任何颜料。

本题中每种颜色用一个正整数表示。给定整数数组 colors,代表作画所需要用到的全部颜色。

商店可以提供任意正整数颜色且数量无限,丹妮卡可以先购买若干种颜色;之后可以通过混合已有颜色得到新颜色。

混合规则:每次只能混合两种颜色 $A,B$,混合后得到新颜色 $A \text{ XOR } B$。通过混合得到的颜色可以继续参与后续混合调配。

允许购买不需要的颜色,要求购买的不同颜色数量尽可能少。求最少需要购买多少种颜色,才能调配出 colors 中所有需要的颜色。


输入格式

第一行一个整数 $n$,表示颜色数量。 第二行 $n$ 个整数,依次给出所需的每种颜色。

输出格式

输出一行一个整数,表示最少需要购买的颜色种数。


样例输入输出

样例 1 输入:

3
1 7 3

输出:

3

样例 2 输入:

15
534 251 76 468 909 410 264 387 102 982 199 111 659 386 151

输出:

10

样例 3 输入:

9
4 8 16 32 64 128 256 512 1024

输出:

9

数据范围

  • (1 \le n \le 50)
  • (1 \le colors_i \le 10^9)
  • 数组中所有元素互不相同

提示

异或(XOR)是一种针对两个数字的二进制运算。首先将位数较短的二进制数高位补前导零,使两个数的二进制位数保持一致。随后按位计算:两个数字对应二进制位不同时,结果该位为 1;对应位相同时,结果该位为 0。

举例说明 (15 \text{ XOR } 55) 的运算过程: 先将两数转为二进制:15 是 1111,55 是 110111。给位数更短的 15 高位补零,补齐到相同位数,变为 001111。接着计算:001111 XOR 110111 = 111000(仅在两数二进制位不同的位置结果为 1)。最后将二进制结果转回十进制:111000 等于 56,因此 (15 \text{ XOR } 55 = 56)。

题目信息
  • 难度 UKE
  • 控制组 group_default
  • 时间限制 1 s
  • 空间限制 256 MB
  • 数据大小 8.263 KB
提交统计
  • 提交数 5
  • 通过数 5
  • 通过率 100%