测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A26783. 奇偶校验

填空题 中等

题目描述

奇偶校验

题目描述

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

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

输入格式

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

第二行, n 个非负整数  c1,c2,,,,cn ,表示所传输的数据。

输出格式

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

第一个整数表示  c1,c2,,,,cn  在二进制下 1 的总数量;

第二个整数表示校验码(0或1)。

样例

输入样例 1

4
71 69 83 80

输出样例 1

13 1

输入样例 2

6
1 2 4 8 16 32

输出样例 2

6 0

数据范围

对于所有测试点,保证 1≤ n ≤100, 1≤ ci ≤255。

参考答案

n= int(input())# 随后将输入的数据个数 nums = input().split()#输入的数据行 nums = list(map(int,nums))# 将每个数都转换为整数,最后转换为list one_count =0 for i in nums: string_bin=bin(i)[2:]#注意转换为二进制后,前导有0b,如bin(10)的结果为0b1010 one_count += string bin.count("1")# 统计1的数量,并累加到one_count变量 #求出校验码 if one_count %2 == 1: check_number=1 #奇数时 else: check_number=0 #偶数时 print(one_count,check_number) #按要求输出
上一题 下一题