1.题目
A、B、C、D、E五个人在某天合伙去捕鱼,到傍晚时都疲惫不堪,于是各自找地方睡觉。第二天,A第一个醒来,把鱼分成五份,把多余的一条鱼扔掉,拿走自己的一份;B第二个醒来,也将鱼分为五份,把多余的一条扔掉,拿走自己的一份;C、D、E依次醒来,也按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?
2.代码
#include<stdio.h>
int main(void)
{
int total;
total = sub(5);
printf("鱼的总数是:%d\n", total);
return 0;
}
int sub(int n) //定义函数求鱼的总数
{
if (n == 1) //当n=1时结束
{
static int i = 0;
do
{
i++;
}
while (i % 5 != 0);
return (i + 1);
}
else
{
int t;
do
{
t = sub(n - 1);
}
while (t % 4 != 0);
return (t / 4 * 5 + 1);
}
}
3.个人见解
由题可得,设鱼的总数是x,
那么第一次每人分到的鱼的数量可用(x-1)/5表示,余下的鱼的数量为4*(x-1)/5。
将余下的数量重新赋值给x,依然调用(x-1)/5。
如果连续五次x-1后均可被5整除,则说明最初的x值便是本题目的解。