逻辑思维题(Python)

本文介绍了两个关于数值变换和幸运数的逻辑思维题目,并提供了Python解决方案。第一个题目要求计算在2到A-1进制下,数A的位数之和的平均值。第二个题目涉及寻找小于等于n的幸运数,即满足十进制和二进制位数之和相等的正整数个数。最后,文章给出将两个集合合并的Python实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【1】  题目内容:尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。小B感兴趣的是,一个数A如果按2到A-1进制表达时,各个位数之和的平均值是多少?她希望你能帮她解决这个问题。所有的计算均基于十进制进行,结果也用十进制表示为不可约简的分数形式。

输入:输入中有多组测试数据。每组测试数据为一个整数A(1<=A<=5000)。

输出:对每组测试数据,在单独的行中以X/Y的形式输出结果。

样例输入:

5

3

样例输出:

7/3

2/1

### Python 思维逻辑面试题目 #### 1. 解释 Zen of Python 并展示如何查看它 Python 的设计哲学强调简洁性和可读性,这被称为《Python 之禅》[^1]。通过运行特定的命令可以轻松访问这些原则: ```python import this ``` 这段代码会打印出一系列指导方针,帮助开发者理解 Python 设计背后的理念。 #### 2. 列表推导式的效率分析 给定两个列表 `a` 和 `b`,编写一段程序找出所有既存在于 a 中又存在于 b 中的元素,并讨论不同实现方式的时间复杂度差异。 ```python # 方法一:使用集合操作 common_elements_set = list(set(a).intersection(set(b))) # 方法二:使用列表推导式 common_elements_list_comp = [item for item in a if item in b] # 讨论两种方法的时间复杂度区别 ``` 第一种方法利用了集合查找 O(1) 的特性,整体时间复杂度接近于线性;而第二种方法由于内层循环的存在,在最坏情况下可能达到二次方级别的时间消耗。 #### 3. 字典键值对交换挑战 给出一个字典 d={key:value},尝试创建一个新的字典 new_d={value:key},并处理可能出现的关键重复问。 ```python def invert_dict(d): inverse = dict() for key, val in d.items(): # 如果值已经作为新字典中的键存在,则将其转换为列表形式存储多个原键 inverse.setdefault(val, []).append(key) return inverse ``` 此函数能够有效地应对原始字典中可能存在相同值的情况,确保不会丢失任何信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIJZ_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值