[Python] (中上难度) 五道高质量例题+详解 算法 奇数个数 求值 猴子分桃 淘汰游戏

1.奇数个数

题目:

计算0—7所能组成的

解析:

代码一:

假设范围为1-8位数的数字,假设sum=s=4是因为个位时只有1,3,5,7四个奇数,循环从两位数开始遍历:

当 j <= 2 时,执行 s *= 7 。是因为对于两位数的奇数,十位只有 7 种选择(因为 0 - 7 共 8 个数字,但首位不能为 0 )。

当 j > 2 时,执行 s *= 8 。因为从第三位数字开始,每多一位数字就多 8 种选择(因为这个时候在十位上放 0 - 7 都可以)。

代码二:

假设组成最大数为7777,逐一循环遍历

先判断每一个数字是不是由0-7组成,再判断是不是奇数

代码:

# 解法一
sum = 4
s = 4
for j in range(2,9):print(sum)if j <= 2:s *= 7else:s *= 8sum += s
print('sum = %d' % sum)
# 输出:
4
32
256
2048
16384
131072
1048576
sum = 8388608
# 解法二:
def count_odd_numbers():count = 0for i in range(1, 8000):  # 0 - 7 组成的最大数为 7777num_str = str(i)all_valid = Truefor digit in num_str:if int(digit) not in range(8):all_valid = Falsebreakif all_valid:if int(num_str[-1]) % 2 == 1:  # 检查个位是否为奇数count += 1return countprint(count_odd_numbers())
# 输出:
2048# 和解法二一样思路,换种写法
def count_odd_numbers():count = 0for i in range(1, 8000):num_str = str(i)digit_list = [int(d) for d in num_str]if all(d in range(8) for d in digit_list) and digit_list[-1] % 2 == 1:count += 1return countprint(count_odd_numbers())

2.求值

题目:

809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果

解析:

这道题有一个迷惑点,就是809*??=800*??+9*??+1这个式子本身就是不可能成立的,所以这道题的关键点就是求出一个值同时满足8*??的结果为两位数,9*??的结果为3位数即可

代码:

for num in range(10, 100):if len(str(8 * num)) == 2 and len(str(9 * num)) == 3:print(f"??代表的两位数是:{num}")# 输出
??代表的两位数是:12

3.猴子分桃

题目:

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

解析:

i代表第几个猴子,j代表每一份桃子数,x代表总的桃子数

while(i<5)代表,用i记录往回推的猴子数,从第0个到第4个是五个,只有当能推到第五个猴子也就是i=5时才退出while,否则j,也就是每一份的桃子数就会+1,一直加到满足条件

改变循环条件变量i的语句在for循环里面,因为每一次重新进行while循环就代表重新从第0个开始往回推,x=4*j是假设的最后剩下的,所以里面的for循环用来真正往回推,能被四整除代表能往回推因为剩下的是被分成五份后拿走了一份的,所以一定能被分成四份,不能就break,这个时候没有成功推回去5次,就会重新进行while循环,能就往前推,公式是x = (x / 4) * 5 + 1

代码:

i = 0
j = 1
x = 0
while (i < 5):x = 4 * jfor i in range(0, 5):if (x % 4 != 0):breakelse:i += 1x = (x / 4) * 5 + 1j += 1
print(x)
# 输出
3121.0

4.淘汰游戏

题目:

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

解析:

把所有人按顺序放入num列表中,如果num[i]=0代表已经退出圈子,k代表当前报到的数字,m代表退出圈子的人数,所以while循环的条件是只剩下最后一个人。num[i]!=0,代表这个位子的人还在,开始报数,报到3的时候退出去一个人,k=0从0重新开始报数,i=n代表遍历完所有人,重新开始遍历,最后输出num[i]不为0的人号数就是最后留下的

代码:

n = int(input('请输入总人数:'))
num = []
for i in range(n):num.append(i + 1)
i = 0  # 遍历所有人
k = 0  # 当前报的数
m = 0  # 退出圈子的人数
while m < n - 1:if num[i] != 0 : k += 1if k == 3:num[i] = 0    # 退出k = 0    # 重新报数m += 1i += 1if i == n : i = 0    # 遍历完所有人再重新遍历
i = 0
while num[i] == 0: i += 1
print(num[i])

5.分解质因子

题目:

编写一个程序,用于对一个数进行分解质因子

解析:

思路没什么大问题,就是注意会有重复因子,所以找到一个因子后要再重复判断还能不能再除这个因子,这里result是一个列表,str1+='*'.join(result)可以把列表用*连接并转换为字符串再和str1连接

代码:

n=int(input('please input n:'))
result=[]
i=2
str1=str(n)+'='
while n>1:if n%i==0:n/=iresult.append(str(i))i -= 1     # 重复因子i +=1
str1+='*'.join(result)
print(str1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tof系统标定流程之lens标定

1、lens标定详解 为什么在标定tof时需要进行lens的标定,可以说lens标定是一个必不可少的步骤,tof模组也是有镜头的,镜头的畸变会导致进入的光线出现偏差,最终照射到tof芯片表面导致深度图的分布出现畸变,通常是枕形畸变。例外一个用途在于,在计算fppn误差环节需要知道镜头…

选股回测思路

数据处理 对日线数据进行数据清理 原来的日线数据包括交易日期、股票代码、股票名称、开盘价、收盘价、最高价、最低价首先计算涨跌幅&#xff0c;涨跌幅 &#xff08;收盘价 - 前一天收盘价&#xff09; / 收盘价然后计算当日涨跌幅&#xff0c;当日涨跌幅 &#xff08;收盘…

导游职业资格考试真题题库

导游职业资格考试真题题库 31.我国目前试点运行的10个TIR口岸中&#xff0c;有6个位于&#xff08;&#xff09;。 A.甘肃 B.新疆 C.宁夏 D.黑龙江 答案&#xff1a;B 解析&#xff1a;我国目前试点运行的10个TIR口岸中&#xff0c;有6个位于新疆。 32.下列新疆节日中&…

LangGPT结构化提示词编写实践

当然&#xff0c;我们可以从几个方面来讲解如何编写LangGPT的结构化提示词&#xff1a; 1. **明确目标**&#xff1a; - **目的**&#xff1a;确定提示词的最终目标&#xff0c;比如生成文本、回答问题、撰写报告等。 - **任务描述**&#xff1a;清晰描述任务&#xf…

随机森林(Random Forest)预测模型及其特征分析(Python和MATLAB实现)

## 一、背景 在大数据和机器学习的快速发展时代&#xff0c;数据的处理和分析变得尤为重要。随着多个领域积累了海量数据&#xff0c;传统的统计分析方法常常无法满足复杂问题的需求。在这种背景下&#xff0c;机器学习方法开始广泛应用。随机森林&#xff08;Random Forest&am…

在 Kali Linux 虚拟机中实现主机代理共享的详细指南

Kali Linux 是网络安全和渗透测试领域中广泛使用的操作系统。它提供了丰富的工具和灵活的环境&#xff0c;适合各种网络安全任务。在某些情况下&#xff0c;您可能需要通过主机的代理服务器来实现特定的网络配置&#xff0c;以便更好地保护隐私或进行网络测试。这篇文章将详细介…

langchain 入门指南 - 实现一个多模态 chatbot

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 在前面的文章中&#xff0c;我们学会了如何通过 langchain 实现本地文档库的 QA&#xff0c;又或者通过 langchain 来实现对话式的问答系…

解决Centos不支持docker命令行tab提示问题!!!

一、CentOS不支持Docker Tab提示 在使用CentOS操作系统时&#xff0c;有些用户可能会遇到不能自动补全Docker命令的问题。这是因为CentOS默认不支持Docker Tab提示功能&#xff0c;需要手动配置才能实现。在这篇科普文章中&#xff0c;我们将介绍如何解决这个问题&#xff0c;…

typescrip 定义函数

// 参数默认值和可选值 function fn1(name: string, age?: number): string {// 那么name必传&#xff0c;age选传&#xff0c;返回为字符串return ${name}${age}; }; fn1("全易"); fn1("全易", 18); // fn1("全易", 18, "在北京") …

GCA检查设计约束流程

文章目录 一、什么是GCA二、GCA流程1 .启动GCA2 .设置lib3 .读design并链接design4 .读SDC5 .analyze_design6 .报告或图形化界面分析结果 一、什么是GCA Galaxy Constraint Analyzer&#xff0c;简称GCA&#xff0c;是一个专门检查设计约束的工具&#xff0c;现在已经集成在P…

MySQL使用教程 最最最实用的零基础教程 直接从安装开始教!!!!

数据构成了我们日益数字化的社会基础。想象一下&#xff0c;从移动应用和银行系统到搜索引擎&#xff0c;再到如 ChatGPT 这样的先进人工智能聊天机器人&#xff0c;这些工具若没有数据支撑&#xff0c;将寸步难行。你有没有好奇过这些海量数据都存放在哪里呢&#xff1f;答案正…

Vue3学习总结

学习Vue3&#xff0c;最好的地方是官网&#xff1a;https://cn.vuejs.org/guide/quick-start.html 我这里只是自己的总结&#xff0c;以加深自己的学习记忆。如果其他人想学习Vue3&#xff0c;建议直接去官网学习。 1、已创建好的Vue3工程再次启动的命令&#xff1a;npm run de…

使用java自带的队列进行存取数据ArrayBlockingQueue 多线程读取ExecutorService

场景&#xff1a; 防止接收数据时处理不过来导致阻塞&#xff0c;使用ArrayBlockingQueue队列存储数据后&#xff0c;以多线程的方式处理数据 保证系统性能。 package com.yl.demo.main4;import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurr…

ArchLinux部署waydroid

在Arch Linux系统上部署Waydroid运行Android APP 文章目录 在Arch Linux系统上部署Waydroid运行Android APP1. 安装要求2. 本机环境3. 安装 Waydroid4. 网络配置5.注册Google设备6. 运行效果图 Waydroid是Anbox配合Haliun技术开发的LXC Android容器&#xff0c;可在GUN/Linux系…

华三云课堂CAS5.0忘记admin密码?

当忘记修改后的管理平台 admin 账户密码&#xff0c;无法登录管理平台。 处理步骤&#xff1a; (1) SSH 连接服务器。 (2) 执行/var/lib/h3class/bin/reset-admin-pwd.sh 命令。 (3) 重置后的密码为 Cloud1234

src漏洞挖掘--验证码篇

图片验证码 验证码前端检测 验证码由客户端JS生成并且仅仅在客户端用JS验证&#xff0c;通过抓包看数据传输是否有验证码字段或者是关闭JS看能否通过验证。 测试方法&#xff1a;当我们开始抓包&#xff0c;输入任意验证码&#xff0c;页面提示验证码错误&#xff0c;且没有抓…

《AM-Bi-LSTM: Adaptive Multi-Modal Bi-LSTM for Sequential Recommendation》

系列论文研读目录 文章目录 系列论文研读目录1.2.3.4.5.6.7.8.9.10. 文章链接 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

【Python中GDAL和OGR的优缺点】

GDAL&#xff08;Geospatial Data Abstraction Library&#xff09;和OGR&#xff08;OpenGIS Simple Features Reference Implementation&#xff09;在地理信息系统&#xff08;GIS&#xff09;和遥感领域都扮演着重要角色&#xff0c;它们各自具有一些优点和缺点。以下是对G…

如何远程调用运维人员电脑桌面

要远程调用运维人员的电脑桌面&#xff0c;可以通过以下几种方法和工具&#xff1a; 一、使用第三方远程控制软件&#xff1a; 要远程访问操作和维护人员的桌面&#xff0c;您可以使用专业的远程桌面软件按照以下步骤操作。以下是使用 Splashtop 的一般指南&#xff0c;但对于…

ME11-创建采购信息记录

ME11 创建采购信息记录 创建Info Record时&#xff0c;工厂不是必输项。因为采购组织可以对应多个工厂&#xff0c;所以可以针对一个工厂设定Info Record&#xff0c;也可以不固定。 计划交货时间维护供应商收到采购订单后&#xff0c;把货送到工厂的时间。 标准数量一般维护为…