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) #按要求输出
上一题
下一题