穷举法例子:百钱百鸡和五人分鱼

百钱百鸡

公鸡5元一只 母鸡3元一只 小鸡1元三只
用100元买100只鸡 问公鸡/母鸡/小鸡各多少只

for x in range(20):
    for y in range(33):
        z = 100 - x - y
        if 5 * x + 3 * y + z // 3 == 100 and z % 3 == 0:
            print(x, y, z)

五人分鱼

A、B、C、D、E五人在某天夜里合伙捕鱼 最后疲惫不堪各自睡觉第二天
A第一个醒来 他将鱼分为5份 扔掉多余的1条 拿走自己的一份
B第二个醒来 也将鱼分为5份 扔掉多余的1条 拿走自己的一份
然后C、D、E依次醒来也按同样的方式分鱼 问他们至少捕了多少条鱼

python代码

fish = 6
while True:
    total = fish
    enough = True
    for _ in range(5):
        if (total - 1) % 5 == 0:
            # 每个人看到的鱼扔掉一条
            # 剩下的鱼如果能被5整除
            total = (total - 1) // 5 * 4
            # 下一个人看到的鱼数量
        else:
            # 如果不能被5整除
            enough = False
            break
    if enough:
        print(fish)
        break
    fish += 5

c代码

#include <stdio.h>
int main()
{
    int a, b, c, d, e;
    int fish = 6;
    // 最后一个人醒来,扔掉一条鱼,鱼还可以被五个人分,所以鱼至少大于等于6条

    for (fish = 6;; fish++)
    {
        a = fish - 1;      // A扔掉一条鱼,还剩下的鱼
        b = a / 5 * 4 - 1; // B扔掉一条鱼,还剩下的鱼
        c = b / 5 * 4 - 1; // C扔掉一条鱼,还剩下的鱼
        d = c / 5 * 4 - 1; // D扔掉一条鱼,还剩下的鱼
        e = d / 5 * 4 - 1; // E扔掉一条鱼,还剩下的鱼
        if (a%5==0&&b%5==0&&c%5==0&&d%5==0&&e%5==0)
        {
            printf("至少合伙捕鱼:%d条\n", a+1);
            break;
        }
    }
    return 0;
}
posted @   嘲讽二百五的五百五  阅读(230)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示