每日一练——第8天

问题描述
随着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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值