注册 登录
编程论坛 Python论坛

蛮力法求鸡和兔的数量

yang158 发布于 2020-04-19 18:26, 4271 次点击
有一群鸡和一群兔,它们的只数相同,它们的脚数都是三位数,且这两个三位数的数字分别是0,1,2,3,4,5。设计一个算法用蛮力法求鸡和兔各有多少只,?它们的脚数各是多少
6 回复
#2
wmf20142020-04-19 19:34
程序代码:
for i in range(102,543):
    a=[0,0,0,0,0,0]
    j=i
    while j>0:
        if int(j%10)<6:
            a[int(j%10)]=1
        j=int(j/10)
    j=int(i/2)
    while j>0:
        if int(j%10)<6:
            a[int(j%10)]=1
        j=int(j/10)
    k=0
    for j in a:
        k=k+j
    if k==6:
        print(i,int(i/2),"\n")

运行结果(第二个结果要去掉,鸡脚不可能是奇数,楼主自己加个判断吧):
304 152
430 215


“if k==6:”改成“if k==6 and (int(i/2) & 1)==0 :”就行了。

[此贴子已经被作者于2020-4-19 19:45编辑过]

#3
yang1582020-04-20 10:50
回复 2楼 wmf2014
好的,谢谢。我再看一看
#4
yang1582020-04-20 11:37
回复 2楼 wmf2014
能不能写一下注释或者提供一下思路,主要是中间while那一段代码
#5
fall_bernana2020-04-21 16:22
以下是引用yang158在2020-4-20 11:37:02的发言:

能不能写一下注释或者提供一下思路,主要是中间while那一段代码


程序代码:

for i in range(102,543):#由这6个数字组成的最小三位数 和 最大三位数
    a=[0,0,0,0,0,0]
    j=i
    #下面2个while是取出2个三位数的每个数字,把这些数字标示到a的下标里,因为0-5每个数字都必须存在,也就是 k==6
    while j>0:
        if int(j%10)<6:
            a[int(j%10)]=1
        j=int(j/10)
    j=int(i/2)
    while j>0:
        if int(j%10)<6:
            a[int(j%10)]=1
        j=int(j/10)
    k=0
    for j in a:
        k=k+j
    if k==6:
        print(i,int(i/2),"\n")

#6
phiplato2020-04-28 10:46
其实就是构成两个三位数,一个是另一个的一半。
#7
sssooosss2020-04-29 08:35
数学题么
1