需要注意的细节:
1.每个人是先将多余的鱼扔进湖里,然后再分成5份并取走自己的一份
2.本题采用正向推算的手法,不需要逆推
思路:
A看到的鱼数 = 总鱼数
B看到的鱼数 = (A - 1) / 5 * (5 - 1)
C看到的鱼数 = (B - 1) / 5 * (5 - 1)
…
E看到的鱼数 = (D - 1) / 5 * (5 - 1)
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,e; // 分别代表5个人醒来之后看到的鱼的数量
for(int a = 5; ; a++) // 采用正推的思维,以a作为手段,分别枚举5个人醒来后看到的鱼数
{
b = (a - 1) / 5 * 4; // b看到的鱼数
c = (b - 1) / 5 * 4; // c看到的鱼数
d = (c - 1) / 5 * 4; // d看到的鱼数
e = (d - 1) / 5 * 4; // e看到的鱼数
if(a % 5 == 1 && b % 5 == 1 && c % 5 == 1 && d % 5 == 1 && e % 5 == 1)
{
cout << "至少合伙捕到的总鱼数为:" << a << endl;
cout << "b、c、d、e分别见到的鱼数为:" << b << " " << c << " " << d << " " << e << endl;
break;
}
}
return 0;
}