有意思的智力题

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:33:13
有5只猴子约好一起在海滩上分苹果。有一只猴子比规定的时间来得早了。它左等右等,也不见其他几只猴子的踪影,于是索性把苹果分成5堆,第堆苹果的数量相同,不过最后还剩下一个苹果。它想了想就把多出的苹果扔到大海里,自已拿走了其中的一堆。一会儿,第二只猴子来了,它又把苹果分成五堆,最后也多出了一个,它同样把多出的苹果扔掉了,并也拿去了一堆苹果。以后其他3只猴子也按相同的方法拿走了属于各自的苹果。
请问:原来至少有多少个苹果?最后至少剩下多少个苹果?

x=1(mod 5) 第一只猴子来时的状态
(x-1)*0.8=1(mod 5) 第二只猴子来时的状态,以此类推
((x-1)*0.8-1)*0.8=x(mod 5)
(((x-1)*0.8-1)*0.8-x)*0.8=y(mod 5)
((((x-1)*0.8-1)*0.8-1)*0.8-y)*0.8=z(mod 5)

最后剩下
(((((x-1)*0.8-1)*0.8-1)*0.8-y)*0.8-z)*0.8

由于题目没说明白,xyz是否都是1?姑且先把式子列在这里

自娱自乐的按照xyz都是1来解的,上代码,请指教,答案是

最小的x是:3121
第五只猴子走后剩下果子数目:1020
请按任意键继续. . .

#include <iostream>

using namespace std;
int main()
{

long x=0;//原来的果子数目
long temp;
while(++x)
{
temp=x;
for(int i=0;i<5;i++)//5只猴子依次取
{
if(temp%5!=1)
break;
if(temp%5==1)
{
temp=(temp-1)*4/5;
if(i==4)
{
cout<<"最小的x是:"<<x<<endl;
cout<<"第五只猴子走后剩下果子数目:"<<temp<<endl;
syst