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;
}