六人合伙捕鱼:C语言求解最少捕鱼数量
思路:从A到F,每个人醒来后都会将鱼分为六份,留下自己的一份,扔掉多余的两条鱼。假设他们合伙至少捕到x条鱼,则每个人拿到的鱼数为$(x-2)/6$(向下取整),加上自己的一份,即为$(x+4)/6$(向上取整)。最后将这六个人拿到的鱼数加起来,如果等于x,则没有扔掉多余的鱼,否则需要补上扔掉的鱼的数量。
代码:
#include <stdio.h>
int main() {
int x = 0;
while (1) {
int fish = 0;
fish += (x + 4) / 6; // A
fish += (x + 4) / 6; // B
fish += (x + 4) / 6; // C
fish += (x + 4) / 6; // D
fish += (x + 4) / 6; // E
fish += (x + 4) / 6; // F
if (fish == x) {
printf("fish=%d\n", x);
break;
}
x++;
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/oZt8 著作权归作者所有。请勿转载和采集!