// 分鱼问题,从E开始递推,使用for循环简化中间计算,优化枚举
#include <iostream>
using namespace std;
int main()
{
int num[5];
for (num[4] = 16; ;num[4] += 20)
{
int i = 3;
for (; i >= 1; --i)
{
num[i] = num[i+1] / 4 * 5 + 1;
if (num[i] % 4 != 0)
break;
}
if (i == 0) // 已找到答案
break;
}
num[0] = num[1] / 4 * 5 + 1;
for (int i = 0; i < 5; ++i)
cout << num[i] << ' ';
return 0;
}
// 分鱼问题,从E开始递推
#include <iostream>
using namespace std;
int main()
{
// 定义数组
int num[5];
// 从6开始枚举num[4]
for (num[4] = 6; ; num[4] += 5)
{
if (num[4] % 4 != 0)
continue;
num[3] = num[4] / 4 * 5 + 1;
if (num[3] % 4 != 0)
continue;
num[2] = num[3] / 4 * 5 + 1;
if (num[2] % 4 != 0)
continue;
num[1] = num[2] / 4 * 5 + 1;
if (num[1] % 4 != 0)
continue;
num[0] = num[1] / 4 * 5 + 1;
break;
}
// 输出答案
for (int i = 0; i < 5; ++i)
cout << num[i] << ' ';
return 0;
}
// 分鱼问题,从A开始递推,使用for循环简化中间计算,优化枚举
#include <iostream>
using namespace std;
int main()
{
int num[5];
for (num[0] = 16; ; num[0] += 5)
{
int i = 0;
for (; i < 4; ++i)
{
num[i+1] = num[i] / 5 * 4; // 整数除法,可以不减1就直接除以5
if (num[i+1] % 5 != 1)
break;
}
if (i >= 4) // 已找到答案
break;
}
for (int i = 0; i < 5; ++i)
cout << num[i] << ' ';
return 0;
}