刷题笔记 - 3008.买笔
Beginning
题目#
代码#
# 方法1
x = int(input())
pen_4 = int(x/4)
surplus = x%4
if(surplus == 3):
print('{:d} {:d} {:d}'.format(1, 1, pen_4-2))
elif(surplus == 2):
print('{:d} {:d} {:d}'.format(1, 0, pen_4-1))
elif(surplus == 1):
print('{:d} {:d} {:d}'.format(0, 1, pen_4-1))
else:
print('{:d} {:d} {:d}'.format(0, 0, pen_4))
# 方法2
x = int(input())
pen_4 = int(x/4)
pen_5 = pen_6 =0
surplus = x%4
while surplus>0:
pen_4 -= 1
surplus += 4
if surplus%5==0:
pen_5 += 1
surplus -= 5
elif surplus%6==0:
pen_6 += 1
surplus -= 6
print('{:d} {:d} {:d}'.format(pen_6, pen_5, pen_4))
算法思想#
若想让笔的数量最大,应优先购买4元的。
以4为基准求余:
-
剩1元,则4元钱的笔少买1支,换成1支5元笔;
-
剩2元,则4元钱的笔少买1支,换成1支6元笔;
-
剩3元,则4元钱的笔少买2支,换成1支5元笔和1支6元笔;
本题的主要思想是 贪心算法 ,方法1属于暴力解法,方法2有待优化(循环中的三块代码操作类似,可以通过函数来处理)
参考资料#
Ending
作者:Koi.C
出处:https://www.cnblogs.com/KoiC/p/17011390.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
声明:转载或使用请注明本文地址,感谢您的阅读!如果文章内容帮到了您,烦请点一下推荐,不胜感激!
欢迎关注个人公众号!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端