鱼C论坛

 找回密码
 立即注册
查看: 2607|回复: 6

题目求助

[复制链接]
发表于 2019-12-2 12:21:05 | 显示全部楼层 |阅读模式

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

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

x
1、有30个人,其中有男人、女人、小孩,在一家饭馆里吃饭一共花费了50先令,每个男人各花5先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人、小孩各有多少人?
题目如上,求大佬支援
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-2 13:18:05 | 显示全部楼层
本帖最后由 jackz007 于 2019-12-2 13:23 编辑

       假设人数:男人 x , 女人 y,小孩 z
  1. x + y + z = 30         . . . . . . (1)
  2. 5 * x + 2 * y + z = 50 . . . . . . (2)
复制代码

       根据 (1)式得到:
  1. z = 30 - (x + y)       . . . . . . (3)
复制代码

        把 (3) 式带入 (2)得到:
  1. y = 4 * (5 - x)        . . . . . . (4)
复制代码

        于是,得到下面的代码:
  1. for x in range(1 , 5):
  2.     y = 4 * (5 - x)
  3.     z = 30 - (x + y)
  4.     print('x = %d , y = %d , z = %d' %(x , y , z))
复制代码

        这是运行实况:
  1. C:\Bin>python x.py
  2. x =  1 , y = 16 , z = 13
  3. x =  2 , y = 12 , z = 16
  4. x =  3 , y =  8 , z = 19
  5. x =  4 , y =  4 , z = 22

  6. C:\Bin>
复制代码


      所以,答案并不唯一,四组都合理。
      
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-2 13:35:07 | 显示全部楼层
jackz007 发表于 2019-12-2 13:18
假设人数:男人 x , 女人 y,小孩 z

       根据 (1)式得到:

第4个步骤没有理解到。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 15:19:43 | 显示全部楼层
for i in range(31):
    for j in range(31):
        for k in range(31):
            if i+j+k==30 and 5*i+2*j+k==50:
                print(i,j,k)


0 20 10
1 16 13
2 12 16
3 8 19
4 4 22
5 0 25
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 16:07:21 | 显示全部楼层
本帖最后由 Stubborn 于 2019-12-2 16:10 编辑

有30个人,其中有男人、女人、小孩,在一家饭馆里吃饭一共花费了50先令,每个男人各花5先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人、小孩各有多少人?

设男人 : x 个            女人: y个         小孩:30 - x - y
知: 50 = 5x + 2y + 30 -x - y
        20 = 4x + y

可知x为整数,且0<  x  < 5:   ->(1,2,3,4)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 19:40:22 | 显示全部楼层
首先,考虑到最极端结果,男人、女人、小孩,其中一类人有 30 人,其余人为 0,那么这种情况是不存在的,但是按照这个思路,穷举一下,那么结果就出来了,代码如下:

  1. for a in range(1, 30) :
  2.       for b in range(1, 30) :
  3.             for c in range(1, 30) :
  4.                   if (a + b + c == 30) and (5*a + 2*b + c == 50) :
  5.                         print(a, b, c)
复制代码

a 代表男人,b 代表女人,c 代表小孩,这里还是以极端情况来做处理,然后分别推算,条件除了人数,还有花费的金额,那么这里就已经拥有两个条件了,这里就可以推出范围,人数不超过 30,花费金额不超过 50。由于这是三元一次方程,且只有两个条件,所以答案肯定不唯一,如果条件和元数相等(即二元方程有两个条件,三元方程有三个条件,以此类推),那么答案就是唯一的,或者是不存在的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 20:49:05 | 显示全部楼层
这不是数学题吗?怎么发到 Python 板块?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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