五人分鱼问题
问题描述:
A、B、C、D、E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5人至少合伙捕到多少条鱼?每个人醒来后所看到的鱼是多少条?
#include "stdio.h"
int main()
{
int i=0; //假定最后一人拿到的鱼
double num[5],p[5];//num拿走前剩下的数量,p拿走的鱼
int camp;
while(1){
p[0]=i++;//穷举最后一人拿走的鱼
num[0]=p[0]*5+1;
int j;
for(j=1;j<5;j++){
p[j]=num[j-1]/4;//整型会自动去尾真烦。所以定义了double类型
camp=p[j]; //目前我想出来的判断是否为整
num[j]=p[j]*5+1;
if(p[j]!=camp || num[j-1]>num[j]){
//printf("p[0]=%d跳出\n",(int)p[0]);//显示循环用
break;//如果鱼不为整数或剩下的鱼变多了,跳出
}
}
if(j==5) {
break;
}
}
int j;
for(j=0;j<5;j++){
print