小猫咪分鱼

A、B、C、D、E5只小猫在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉。第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?

#include <stdio.h>

// 倒推计算最初的鱼的数量

int calculateFish() {

    int i,fish = 1;

    while (1) {

        int temp = fish;

        // int i;

        for (i = 0; i < 5; i++) {

            // 判断是否能按规则分鱼

            if ((temp - 1) % 5 != 0) {

                break;

            }

            // 计算剩下的鱼的数量

            temp = (temp - 1) / 5 * 4;

        }

        // 如果 5 个都能按规则分鱼,找到结果

        if (i == 5) {

            return fish;

        }

        // 每次增加 5 的幂次(根据问题数学特性),加快查找速度

        fish += 5;

    }

}

int main() {

    int result = calculateFish();

    printf("他们合伙至少捕了 %d 条鱼\n", result);

    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值