问题描述
随着2024年的钟声回荡,传说中的时空之门再次敞开。这扇门是一条神秘的通道,它连接着二进制和四进制两个不同的数码领域,等待着勇者们的探索。
在二进制的领域里,勇者的力量被转换成了力量数值的二进制表示中各数位之和。
在四进制的领域里,力量的转换规则相似,变成了力量数值的四进制表示中各数位之和。
穿越这扇时空之门的条件是严苛的:当且仅当勇者在二进制领域的力量等同于四进制领域的力量时,他才能够成功地穿越。
国王选定了小蓝作为领路人,带领着力量值从1到2024的勇者们踏上了这段探索未知的旅程。作为小蓝的助手,你的任务是帮助小蓝计算出,在这2024位勇者中,有多少人符合穿越时空之门的条件。
import os
import sys
# 定义一个将整数转换为四进制表示的字符串的函数
# 这个函数用于将一个整数n转换成四进制形式的字符串
# 参数n: 需要转换的整数
# 返回值: n的四进制形式的字符串
def si(n):
if n==0:
return "0"
elif n==1:
return "1"
else:
return si(n//4)+str(n%4)
# 定义一个将整数转换为二进制表示的字符串的函数
# 这个函数用于将一个整数n转换成二进制形式的字符串
# 参数n: 需要转换的整数
# 返回值: n的二进制形式的字符串
def er(n):
return bin(n)[2:]
# 定义一个计算四进制表示的字符串中各数字之和的函数
# 这个函数用于计算一个整数n转换为四进制后,各个数字的和
# 参数n: 需要计算的整数
# 返回值: 四进制表示中各数字的和
def sid(n):
return sum(int(i) for i in si(n))
# 定义一个计算二进制表示的字符串中各数字之和的函数
# 这个函数用于计算一个整数n转换为二进制后,各个数字的和
# 参数n: 需要计算的整数
# 返回值: 二进制表示中各数字的和
def erd(n):
return sum(int(i) for i in er(n))
# 初始化计数器,用于统计四进制和二进制表示中各数字之和相等的整数数量
count=0
# 遍历从1到2024的所有整数,检查它们的四进制和二进制表示中各数字之和是否相等
for i in range(1,2025):
if sid(i)==erd(i):
count+=1
# 输出统计结果
print(count)
小蓝想要构造出一个长度为10000的数字字符串,有以下要求:
1.小蓝不喜欢数字0,所以数字字符串中不可以出现0;
2.小蓝喜欢数字3和7,所以数字字符串中必须要有3和7这两个数字。
请问满足题意的数字字符串有多少个?这个数字会很大,你只需要输出其对10⁹+7取余后的结果。
import os
import sys
# 请在此输入您的代码
mod = pow(10,9) + 7
p9 = pow(9, 10000, mod)
p8 = pow(8, 10000, mod)
p7 = pow(7, 10000, mod)
print((p9 - 2 * p8 + p7) % mod)