A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?
#include <iostream>
using namespace std;
bool fun1(int n, int count)
{
if (0 == count)
{
return false;
}
if (0 == n)
{
return true;
}
if (1 != (count % 5))
{
return false;
}
return fun1(n - 1, count / 5 * 4);
}
int fun2(int n)
{
if (n == 1)
{
static int i = 0;
do
{
i++;
}
while (i % 5 != 1);
return i;
}
else
{
int t = 0;
do
{
t = fun2(n - 1);
}
while (t % 4 != 0);
return (t / 4 * 5 + 1) ;
}
}
int fun3(void)
{
bool flag = false;
for (int n = 6; ; n += 5)
{
int temp = n;
flag = true;
for (int j = 5; j > 0; --j)
{
if (temp % 5 != 1)
{
flag = false;
break;
}
temp = temp / 5 * 4;
}
if (flag)
{
return n;
}
}
}
int main()
{
for (int n = 0; true; ++n)
{
if (fun1(5, n))
{
cout << n << endl;
break;
}
}
cout << fun2(5) << endl;
cout << fun3() << endl;
return 0;
}
输出是
3121
3121
3121
Process returned 0 (0x0) execution time : 0.807 s
Press any key to continue.