鱼C论坛

 找回密码
 立即注册
查看: 3969|回复: 10

[已解决]一道有趣的计算题

[复制链接]
发表于 2018-2-11 14:20:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ图片20180211141926.jpg


不管用什么语言算出来就好, 大家有没有空 算一下
最佳答案
2018-2-11 20:32:36
  1. #酒瓶喝酒问题
  2. L = [5, 5, 5, 3]
  3. while L[3] != 0:
  4.         L[0] += L[3]
  5.         L[1] = L[1] % 2 + L[3]
  6.         L[2] = L[2] % 4 + L[3]
  7.         L[3] = L[1] // 2 + L[2] // 4
  8. print('一共喝了%d瓶,还剩%d个瓶盖和%d个空瓶'%(L[0],L[1],L[2]))


  9. 一共喝了15瓶,还剩1个瓶盖和3个空瓶
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-11 14:33:34 | 显示全部楼层
Python
  1. def jipingjiu(money):  
  2.     beer = money / 2  # 不考虑找零  money%2  
  3.     btt, cap = money/2, money/2   #买过酒得到的酒瓶及瓶盖  
  4.     flag = 1  
  5.     brr = 0  #如果可以赊酒的话  
  6.     while flag:  
  7.         a = btt/2   #酒瓶换酒  
  8.         b = cap/4   #瓶盖换酒  
  9.         tmp = a + b - brr  
  10.         if tmp > 0 or brr == 2:  
  11.             beer += a + b  
  12.             btt = a + b - brr + btt%2   
  13.             cap = a + b - brr + cap%4   
  14.             brr = 0  
  15.             flag = btt + cap  
  16.         #   flag = btt/2 + cap/4   #如果不能赊酒的话  
  17.         else:  
  18.             btt += 1 #赊一瓶酒  
  19.             cap += 1  
  20.             brr += 1   
  21.         print "喝了{}瓶酒,赊了{}瓶酒,剩余{}酒瓶及{}瓶盖".format(beer, brr, btt,cap)  
  22.          
  23. jipingjiu(10)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-11 14:41:51 | 显示全部楼层


  btt, cap = money/2, money/2   #买过酒得到的酒瓶及瓶盖     这一句不懂, 大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 14:46:39 | 显示全部楼层
Ъγ:_小ツ雨oο 发表于 2018-2-11 14:41
btt, cap = money/2, money/2   #买过酒得到的酒瓶及瓶盖     这一句不懂, 大佬

??除以二
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 14:47:25 | 显示全部楼层
Ъγ:_小ツ雨oο 发表于 2018-2-11 14:41
btt, cap = money/2, money/2   #买过酒得到的酒瓶及瓶盖     这一句不懂, 大佬

找钱吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 15:27:52 | 显示全部楼层
本帖最后由 °蓝鲤歌蓝 于 2018-3-8 16:55 编辑
  1. def PiJiu(battle,cup,boo):
  2.     if cup < 2 and boo < 4:
  3.         return battle
  4.     else:
  5.         battle1 = cup // 2 + boo // 4
  6.         cup = battle1 + cup % 2
  7.         boo = battle1 + boo % 4
  8.         return battle + PiJiu(battle1, cup, boo)

  9. # 10元5瓶酒,5个盖子,5个空瓶
  10. Pi = PiJiu(5,5,5)
  11. print(Pi)
复制代码


答案是15瓶。
前段时间卖汽水,现在过来买啤酒。放心,我什么都不会买的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-2-11 15:36:56 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-11 15:27
答案是15瓶。
前段时间卖汽水,现在过来买啤酒。放心,我什么都不会买的。

,   为啥都用py里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 15:43:36 | 显示全部楼层

我学Python比较多,C和Java就会一点点,
思路是有,但是用另外两种语言写不出来。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 17:20:39 | 显示全部楼层
c语言应该 好些一点吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 17:54:13 | 显示全部楼层
  1. import tkinter as tk

  2. def hePijiu(qian):
  3.     pijiushu = qian // 2
  4.     pinyu = 0
  5.     gaiyu = 0
  6.     zpijiushu = pijiushu
  7.     while pijiushu>=1 :
  8.         pijiushu_qian = pijiushu
  9.         pingyu_qian = pinyu
  10.         gaiyu_qian = gaiyu
  11.         pijiushu= (pijiushu_qian+pingyu_qian)//2 + (pijiushu_qian+gaiyu_qian)//4
  12.         pinyu = (pijiushu_qian+pingyu_qian) % 2
  13.         gaiyu = (pijiushu_qian+gaiyu_qian) % 4
  14.         zpijiushu=zpijiushu + pijiushu
  15.     return zpijiushu

  16. master = tk.Tk()
  17. tk.Label(master, text="钱数:").grid(row=0)
  18. e1 = tk.Entry(master)
  19. e1.delete(0,tk.END)
  20. e1.insert(0,'10')
  21. e1.grid(row=0, column=1, padx=10, pady=5)
  22. v = tk.StringVar()
  23. label = tk.Label(master, textvariable=v)
  24. label.grid(row=3, column=1, padx=10, pady=5)

  25. def show():
  26.     qian = e1.get()
  27.     try:
  28.         q = int(qian)
  29.         v.set("总共能喝%s瓶" % hePijiu(q))
  30.         e1.delete(0, tk.END)
  31.     except:
  32.         v.set("请输入一个数字!")
  33.         e1.delete(0, tk.END)
  34. tk.Button(master, text="计算", width=10, command=show)\
  35.     .grid(row=3, column=0, sticky=tk.W, padx=10, pady=5)
  36. tk.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 20:32:36 | 显示全部楼层    本楼为最佳答案   
  1. #酒瓶喝酒问题
  2. L = [5, 5, 5, 3]
  3. while L[3] != 0:
  4.         L[0] += L[3]
  5.         L[1] = L[1] % 2 + L[3]
  6.         L[2] = L[2] % 4 + L[3]
  7.         L[3] = L[1] // 2 + L[2] // 4
  8. print('一共喝了%d瓶,还剩%d个瓶盖和%d个空瓶'%(L[0],L[1],L[2]))


  9. 一共喝了15瓶,还剩1个瓶盖和3个空瓶
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 03:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表