捕鱼分鱼。
代码:
/*头文件*/
#include <stdio.h>
/*主函数*/
int main(void)
{
/*代表A,B,C,D,E四个人*/
char ABCDE;
/*
sum=1,代表鱼从第一条开始,用以穷举
temp,每次循环保存sum的值,以防止改变sum值
a,为计数器,记录每次的鱼有多少次满足题目要求,如果为5次,那么说明这是一个答案
*/
int sum=1,temp,a;
/*循环,穷举*/
while(sum)
{
/*a为计数器,每次鱼的数目不同,每新的一次循环,a的值赋值为0*/
a=0;
/*用temp保存sum的值,以防止改变sum的值,从而用temp进入另一个循环,求倒底合不合题目要求*/
temp=sum;
/*另一个循环,求鱼合不合题目要求*/
for(ABCDE='A';ABCDE<='E';ABCDE++)
{
/*如果(temp-1)%5==0,说明符合题目要求,然后计数器a自增1,将temp变为余下的鱼*/
if((temp-1)%5==0)
{
/*计数器自增1*/
a++;
/*分鱼,先减1,然后再除以5,因为上面题目符合要求,所以此处可以除尽*/
temp=(temp-1)/5;
/*temp=temp*4,这里是将temp等于分完鱼后拿走了一些剩下的鱼,也就是5份拿走了一份,所以就乘以4*/
temp*=4;
}
}
/*判断a是否等于5,如果等于,说明上面循环里的if语句条件都成立,也就说明那循环的5次每次都符合题目要求*/
if(a==5)
/*如果成立,说明这是一个答案,那么我们就跳出这个循环*/
break;
/*如果上面if条件不成立,那我们就将sum这个鱼的数量自增1,进行下一次判断*/
sum++;
}
/*跳出循环后,就把题目解sum打印*/
printf("%d",sum);
}
/*过程*/
/*
A:3121条 (312