博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言经典算法——猴子偷桃问题
阅读量:5797 次
发布时间:2019-06-18

本文共 1093 字,大约阅读时间需要 3 分钟。

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

算法分析://初始桃子数为sum

第一次:sum=5*x1+1   
第二次:4*x1=5*x2+1
第三次:4*x2=5*x3+1
第四次:4*x3=5*x4+1
第五次:4*x4=5*x5+1
第五次分配结束:剩下4*x5个桃子,而x5>=1,故i=4*x5>=4 。每次向上推j=(i/4)*5+1;i=j;每次上推结束后判断j%4是否等于0,如果为0则继续上推,否则更新i,直到找到能够完成五次上推的整数i,最后可以得到最初的桃子数。

C语言程序:

1 #include
2 int main(int agrc, char*agrv[]) 3 { 4 int i, m, j, k, count; 5 for (i = 4; i<10000; i += 4) 6 /*i为5个猴子分配桃子后最后剩余的桃子,必须为4的倍数,然后以此为基础, 7 向上推5次,如果刚好能够推到第五次,则此剩余的桃子数i是满足条件的,否则换一个 8 剩余的桃子数,直到找到符合条件的最小剩余桃子数*/ 9 {10 count = 0;11 m = i;12 for (k = 0; k<5; k++)13 {14 j = i / 4 * 5 + 1;15 i = j;16 if (j % 4 == 0)17 count++;18 else19 break;20 }21 i = m;22 if (count == 4)23 {24 printf("原来最少的桃子数为:%d\n", j);25 break;26 }27 }28 system("pause");29 return 0;30 }

 

转载于:https://www.cnblogs.com/dootoo/p/4469648.html

你可能感兴趣的文章
btrace
查看>>
hdfs笔记
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
《中国梦之声》新季开播 乐视生态“逆向造星”
查看>>
DHCP中继数据包互联网周游记
查看>>
oracle学习笔记-第四篇
查看>>
IBM MQ通道
查看>>
我的友情链接
查看>>
[转载]安装完 MySQL 后必须调整的 10 项配置
查看>>
SpringMVC拦截器(资源和权限管理)
查看>>
laravel的模板继承的使用
查看>>
FireEye:雪人行动针对美国海外战争退伍军人网站
查看>>
Squid 反向代理服务器配置
查看>>
情深意伤
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>