#273. 奇偶校验

奇偶校验

奇偶校验

题目描述

数据在传输过程中可能出错,因此接收方收到数据后通常会校验传输的数据是否正确,奇偶校验是经典的校验方式之一。

给定 nn 个非负整数 c1,c2,,cnc_1, c_2, \ldots, c_n 代表所传输的数据,它们的校验码取决于这些整数在二进制下 11 的数量之和的奇偶性。如果这些整数在二进制下共有奇数个 11,那么校验码为 11;否则校验码为 00。你能求出这些整数的校验码吗?

输入格式

第一行,一个正整数 nn,表示所传输的数据量。

第二行,nn 个非负整数 c1,c2,,cnc_1, c_2, \ldots, c_n,表示所传输的数据。

输出格式

输出一行,两个整数,以一个空格分隔:

第一个整数表示 c1,c2,,cnc_1, c_2, \ldots, c_n 在二进制下 11 的总数量;

第二个整数表示校验码(0011)。

样例输入

样例输入 1

4
71 69 83 80

样例输入 2

6
1 2 4 8 16 32

样例输出

样例输出 1

13 1

样例输出 2

6 0

样例解释

对于第一个样例,输入数据为 44 个整数:71,69,83,8071, 69, 83, 80。分别计算它们在二进制下 11 的个数:

  • 71=64+4+2+1=(1000111)271 = 64 + 4 + 2 + 1 = (1000111)_2,包含 4411
  • 69=64+4+1=(1000101)269 = 64 + 4 + 1 = (1000101)_2,包含 3311
  • 83=64+16+2+1=(1010011)283 = 64 + 16 + 2 + 1 = (1010011)_2,包含 4411
  • 80=64+16=(1010000)280 = 64 + 16 = (1010000)_2,包含 2211

所有整数二进制下 11 的个数之和为 4+3+4+2=134+3+4+2=13,是一个奇数。因此校验码为 11,最终输出 13 1

数据范围

对于所有测试点,1n1001 \le n \le 1000ci2550 \le c_i \le 255