一道数学智力题
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同...
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
注:可以用java程序写。直接写答案,数学题解,也可以。
有个错别字,平均,而不是凭据。
希望用java或者数学思路,求验证一下。 展开
注:可以用java程序写。直接写答案,数学题解,也可以。
有个错别字,平均,而不是凭据。
希望用java或者数学思路,求验证一下。 展开
展开全部
设第五只猴子拿走的那份有n个,则第五只猴子到来的时候应该5n+1个桃子
而5n+1是第4个猴子拿走一份后剩下的4份,∴5n+1是的倍数
而5n+1=4n+n+1,∴n+1是4的倍数,设n+1=4k,即n=4k-1
∴5n+1=20k-4=4(5k-1),即第四只猴子拿走的那一份桃子是5k-1个
也就是第四只猴子来的时候有5(5k-1)+1=25k-4个桃子
同理这也应该是4的倍数,∴k必须为4的倍数,设k=4m,
则25k-4=4(25m-1),所以第三只猴子来的时候有5(25m-1)+1=125m-4个桃子
同样该数是4的倍数,∴m=4a,则125m-4=4(125a-1)
∴第二只猴子来的时候有5(125a-1)+1=625a-4个桃子
同样有a=4b,∴625a-4=4(625b-1),∴第一只猴子来的时候有
5(625b-1)+1=3125b-4个桃子,那显然这个数最小时取b=1
即原来最少有3121个桃子
而5n+1是第4个猴子拿走一份后剩下的4份,∴5n+1是的倍数
而5n+1=4n+n+1,∴n+1是4的倍数,设n+1=4k,即n=4k-1
∴5n+1=20k-4=4(5k-1),即第四只猴子拿走的那一份桃子是5k-1个
也就是第四只猴子来的时候有5(5k-1)+1=25k-4个桃子
同理这也应该是4的倍数,∴k必须为4的倍数,设k=4m,
则25k-4=4(25m-1),所以第三只猴子来的时候有5(25m-1)+1=125m-4个桃子
同样该数是4的倍数,∴m=4a,则125m-4=4(125a-1)
∴第二只猴子来的时候有5(125a-1)+1=625a-4个桃子
同样有a=4b,∴625a-4=4(625b-1),∴第一只猴子来的时候有
5(625b-1)+1=3125b-4个桃子,那显然这个数最小时取b=1
即原来最少有3121个桃子
追问
我是这样算的,第五只猴子:6
第四只:31
第三只:156
第二只:3906
第一只:19531
请问逻辑哪错了?
追答
计算方法错了
第5只猴子 6,那么6应该是第四只猴子拿了一份剩下的4份总和
但6不是4的倍数,所以这不可能
比如你算出第四只是 31 ,那么去掉一个 剩下30 平均分成5分,每份6个
然后拿走一份,剩下4份应该有4×6=24个,所以第五只猴子来的时候是
24个而不是6个
展开全部
若最后剩x个桃子,则之前一只猴子走后剩5/4x+1,即a(n-1)=5/4a(n)+1,倒推即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分成两堆,A堆5个,B堆7个,然后反5个的那一堆全部反转即可.
分析如下:
如A为5正0反,则B为0正,翻后A为0正,
如A为4正1反,则B为1正,翻后A为1正,
如A为3正2反,则B为2正,翻后A为2正,
如A为2正3反,则B为3正,翻后A为3正,
如A为1正4反,则B为4正,翻后A为4正,
如A为0正5反,则B为5正,翻后A为5正.
满意请采纳。
分析如下:
如A为5正0反,则B为0正,翻后A为0正,
如A为4正1反,则B为1正,翻后A为1正,
如A为3正2反,则B为2正,翻后A为2正,
如A为2正3反,则B为3正,翻后A为3正,
如A为1正4反,则B为4正,翻后A为4正,
如A为0正5反,则B为5正,翻后A为5正.
满意请采纳。
追问
什么逻辑?外星文?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案应该是3906吧
追问
我算了是你这个乘以5,可参考答案是3121。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int main()
{
int i = 0, m = 1, x = 1;
while(1)
{
m = x;
for(i = 0; i < 5; i++)
{
if( (m - 1) % 5 == 0)
m = (m - 1) / 5 * 4;
else
break;
}
if(i == 5 && m > 0)
break;
x++;
}
printf("%d\n", x);
return 0;
}
答案是3121
{
int i = 0, m = 1, x = 1;
while(1)
{
m = x;
for(i = 0; i < 5; i++)
{
if( (m - 1) % 5 == 0)
m = (m - 1) / 5 * 4;
else
break;
}
if(i == 5 && m > 0)
break;
x++;
}
printf("%d\n", x);
return 0;
}
答案是3121
追问
我是这样算的,第五只猴子:6
第四只:31
第三只:156
第二只:3906
第一只:19531
请问逻辑哪错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询