自己做网站卖仿货,wordpress的文件权限,陕西省建设厅证件查询,旅游公司网站建设方案问题#xff1a;海滩上有一堆桃子#xff0c;五只猴子来分。第一只猴子把这堆桃子平均分为五份#xff0c;多了一个#xff0c;这只 猴子把多的一个扔入海中#xff0c;拿走了一份。第二只猴子把剩下的桃子又平均分成五份#xff0c;又多了 一个#xff0c;它同样把多的…问题海滩上有一堆桃子五只猴子来分。第一只猴子把这堆桃子平均分为五份多了一个这只 猴子把多的一个扔入海中拿走了一份。第二只猴子把剩下的桃子又平均分成五份又多了 一个它同样把多的一个扔入海中拿走了一份第三、第四、第五只猴子都是这样做的 问海滩上原来最少有多少个桃子
#include stdio.h
#include math.hint main()
{const int monkey_num 5;int monkey monkey_num;int i 1;int peach i;while (monkey 1) //从第5只猴子开始倒着推算一直推算到第1只猴子{if (peach % 4 0){peach peach / 4 * 5 1; //假设第n只猴子看到的桃子数是peach那么上一只猴子看到的桃子数等于peach /4 * 5 1monkey--;}else //如果倒推过程失败那么试探新的peach值并从第5只猴子开始重新倒推{peach i;monkey monkey_num;}}printf(original peach num:%d\n, peach);return 0;
}13只猴子也能在几十毫秒算出结果 如果个数再多int要换成long long。
减少循环次数程序速度还可以优化。
其实仔细观察猴子和桃子的个数可以发现两者之间有一个函数关系可以直接根据猴子求得桃子个数~_~