1、位1的个数
输入一个非负整数,求它变成二进制后1的个数(提示:用bin函数)。
输入格式:
输入一个正整数。
输出格式:
输出1的个数。
输入样例1:
在这里给出一组输入。例如:
37
输出样例1:
在这里给出相应的输出。例如:
3
输入样例2:
在这里给出一组输入。例如:
0
输出样例2:
在这里给出相应的输出。例如:
0
解答代码:
num = int(input())
sum = 0
n = num
while num >=2:
n = int(num/2)
if 2*n < num:
sum = sum + 1
num = n
if num == 1:
sum = sum + 1
print(sum)
2、整数的二进制相加
输入两个整数,大小在[0,63]
之间。求它们的二进制和,二进制用8位表示。
输入格式:
在一行输入一个整数,在另一行输入另一个整数。
输出格式:
输出它们的二进制和。
输入样例:
在这里给出一组输入。例如:
5
7
输出样例:
在这里给出相应的输出。例如:
00000101
00000111
--------
00001100
解答代码:
a=int(input())
b=int(input())
a1=bin(a)[2:]
b1=bin(b)[2:]
c=bin(a+b)[2:]
print("{:>08}".format(a1))
print("{:>08}".format(b1))
print('--------')
print("{:>08}".format(c))
3、汉明距离
两个整数间的汉明距离指的是这两个数对应二进制位不同的位置的数目。输入两个整数x,y, 0<=x,y<=231。输出x,y的汉明距离。
输入格式:
在一行输入x,y。
输出格式:
在一行输出x,y汉明距离。
输入样例:
在这里给出一组输入。例如:
1 4
输出样例:
在这里给出相应的输出。例如:
2
解答代码:
a,b = map(int,input().split())
a1=bin(a)[2:]
b1=bin(b)[2:]
lengtha = len(a1)
lengthb = len(b1)
sum = 0
if lengtha > lengthb:
for i in range(0,lengthb):
if a1[i+lengtha-lengthb] != b1[i]:
sum = sum + 1
for i in range(0,lengtha-lengthb):
if a1[i] == "1":
sum = sum + 1
elif lengtha < lengthb:
for i in range(0,lengtha):
if b1[i+lengthb-lengtha] != a1[i]:
sum = sum + 1
for i in range(0,lengthb-lengtha):
if b1[i] == "1":
sum = sum + 1
print(sum)
4、判断回文字符串
回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。
输入一个字符串,判断该字符串是否为回文,只考虑数字和字母字符,字母的大小写没有区别。
输入格式:
输入一个字符串。
输出格式:
是回文,一行输出yes
,否则输出no
。
输入样例:
在这里给出一组输入。例如:
A man,a plan; cnalPanama
输出样例:
在这里给出相应的输出。例如:
yes
解答代码:
l1 = list(input())
str = ""
length = len(l1)
t = 0
for i in range(0,length):
if l1[i] <= "Z" :
if l1[i] >= "A":
str = str + l1[i]
if l1[i] <= "z" :
if l1[i] >= "a":
str = str + l1[i]
length = len(str)
n = int(length/2)
flag = True
for i in range(0,n):
if str[i] != str[length-1-i]:
if chr(ord(str[i])+ord('A')-ord('a')) != str[length-1-i]:
if chr(ord(str[i])-ord('A')+ord('a')) != str[length-1-i]:
flag = False
if flag == True:
print("yes")
else :
print("no")
5、输入一行字符串,并将它转换成10进制数输出
输入一行字符串,去掉非16进制字符,并将它转换成10进制数输出。
输入格式:
输入一行字符串。
输出格式:
输出16进制字符串和转换后的10进制数。
输入样例:
在这里给出一组输入。例如:
_ahg1*B
输出样例:
在这里给出相应的输出。例如:
a1B
2587
解答代码:
l1 = list(input())
str = ""
length = len(l1)
for i in range(0,length):
if l1[i] <= "F" :
if l1[i] >= "A":
str = str + l1[i]
if l1[i] <= "f" :
if l1[i] >= "a":
str = str + l1[i]
if l1[i] <= "9" :
if l1[i] >= "0":
str = str + l1[i]
print(str)
sum = 0
length = len(str)
for i in range (0,length):
if str[i] <= "9":
if str[i] >= "0":
n = ord(str[i]) - ord('0')
elif str[i] <= "F" :
if str[i] >= "A":
n = ord(str[i]) - ord('A') + 10
elif str[i] <= "f" :
if str[i] >= "a":
n = ord(str[i]) - ord('a') + 10
num = length - i - 1
s = n *(16 ** num)
sum = sum + s
print(sum)