最开始看到题就想到了进制转换,我是自己定义了两个进制转换的函数来进行进制转换。首先先用短除法理一下进制转换的思路。
首先我们定义一个转换为二进制数的函数,为了方便后续操作,我们用列表存储二进制数每一位的元素。
def zhuan_two(x):
a=[]
while x!=0:
b=x%2
a.append(b)
x//=2
a.reverse()
return a
四进制与之相类似,再定义一个判断各个位之和是否相等的函数,即可求出答案。
#定义一个转化为二进制的函数
def zhuan_two(x):
a=[]
while x!=0:
b=x%2
a.append(b)
x//=2
a.reverse()
return a
#定义一个转化为四进制的函数
def zhuan_four(x):
a=[]
while x!=0:
b=x%4
a.append(b)
x//=4
a.reverse()
return a
def sum_digit(n):
if sum(zhuan_two(n))==sum(zhuan_four(n)):
return True
ans=0
for i in range(1,2025):
if sum_digit(i):
ans+=1
print(ans)
63