海盗分椰子吃
来源:互联网 发布:listen up软件 编辑:程序博客网 时间:2024/04/28 19:38
----------------------------------------------------------Sun---------------------------------------------------------------------------
来自牛客智力题
话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有棵椰子树,还有一只猴子! 大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先.
晚上某个家伙悄悄的起床,悄悄的将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄悄的藏了一份,然后把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了. 过了会儿,另一个家伙也悄悄的起床,悄悄的将剩下的椰子分成5份,结果发现多一个椰子,顺手就又给了幸运的猴子,然后又悄悄滴藏了一份,把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了. 又过了一会 ... ... 又过了一会 ... 总之5个家伙都起床过,都做了一样的事情 早上大家都起床,各自心怀鬼胎的分椰子了,这个猴子还真不是一般的幸运,因为这次把椰子分成5分后居然还是多一个椰子,只好又给它了。
问题来了,问这堆椰子最少有几个?
思路:
假设总共有x个椰子,第一个人藏的有x1个,第二个人藏了x2个,第三个藏了x3个,第四个藏了x4个,第五个藏了x5个椰子,第二天早上剩下的椰子有y个,最后公开每个人分得y'个椰子。
那么:
那么:
因为五个人各自藏了一部分之后剩下的是四份,所以每一次的椰子必须能被4整除,而且还除以5余1
x=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=y; y=5*y1+1;
得 x=(15625*y' + 11529)/1024 = (15*y'+11) + 265(y'+1)/1024
当y'=1023时,x有最小值 x=15*1023+11+265=15621
int main(){ int i,temp,res; for(res = 16;res < 20000;res++) //符合最小条件的应是16 { temp = res; for( i = 0;i <= 5;i++) //总共五个海盗,最多分五次 { if( temp%5 == 1) { temp = (temp-1)*4/5; //留下这一次的五分之四 } else temp = -1; } if(temp != -1) cout <<"椰子最少有:"<<res<< endl; } return 0;}
结果: 最少有 15621 个椰子
0 0
- 海盗分椰子吃
- 吃椰子记
- 水手分椰子问题
- SailorSubCoconut水手分椰子
- 水手分椰子
- 水手分椰子问题
- 海盗分金块问题
- 海盗分金问题
- 海盗分金币
- 海盗分金币
- 海盗分金问题
- 海盗分金
- [数学]海盗分金块
- 海盗分金子
- 海盗分金
- 海盗分宝问题
- 海盗分金1
- 海盗分金2
- 分数中的运算符重载(1)
- (一)CSS书写基础、背景、文字属性
- NSTimer倒计时
- Java学习笔记之Array类
- 二,语法环境
- 海盗分椰子吃
- cocoaPods安装及使用
- iOS >> POST 上传数据(文件压缩)>>表单上传 (如何设置form格式)
- Hibernate从入门到放弃(三)----持久化对象
- Echarts入门,条形图,饼图(南丁格尔图)
- MT6628抓取CQI log的方法
- iOS 用过还不错的第三方库分享<会不断更新。。。。。。>
- jQuery自定义函数
- 项目引入EarlGrey自动化测试