24小时热门版块排行榜    

查看: 425  |  回复: 3

额纪

木虫 (初入文坛)

[求助] 分鱼的问题

A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?
以下是代码
CODE:
>>>n=6
>>> flag=0
>>> while flag==0:
        n+=5
        s=n
        for i in range(5):
                s,y=divmod(s-1,5)
                if y==0:
                        s*=4
                        flag=1
                else:
                        flag=0
                        break
        print n

结果可以出来,但是把所有的n值都打印出来了。有没有办法直接打印最后的那个结果,前面的可能值都不要?
回复此楼

» 猜你喜欢

活在当下,做好自己
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

haixiawu

金虫 (文坛精英)

【答案】应助回帖

感谢参与,应助指数 +1
你的程序把问题弄复杂了,第五人最少能拿到一条鱼,再往前推:

def GetNumber():
    s = 1;
    for i in range(1, 6):
        s = s*5 + 1
   
print GetNumber()
# result is 3906
2楼2013-03-03 10:16:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

额纪

木虫 (初入文坛)

引用回帖:
2楼: Originally posted by haixiawu at 2013-03-03 10:16:50
你的程序把问题弄复杂了,第五人最少能拿到一条鱼,再往前推:

def GetNumber():
    s = 1;
    for i in range(1, 6):
        s = s*5 + 1
   
print GetNumber()
# result is 3906

你这样太简单了,没有判断剩下的鱼够不够分成4份。正确的解应该是3121。我的结果是对的,但是把正确解前面的解也打印出来,怎么只打印最后那个正确解?
活在当下,做好自己
3楼2013-03-03 13:41:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

haixiawu

金虫 (文坛精英)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
额纪: 金币+10, ★★★★★最佳答案, 谢谢 2013-03-03 17:20:25
n=6
        flag=0
        while flag==0:
                n+=5
                s=n
                for i in range(5):
                        s,y=divmod(s-1,5)
                        if y==0:
                                s*=4
                                flag=1
                        else:
                                flag=0
                                break
                if flag:
                    print n
4楼2013-03-03 14:31:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 额纪 的主题更新
信息提示
请填处理意见