一道创新工场面试题详解:共打了多少鱼?
来源:互联网 发布:欧陆风云4 mac版下载 编辑:程序博客网 时间:2024/04/29 02:36
一道创新工场面试题详解:共打了多少鱼?
题目:
abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的均分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的均分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼?
解法:
这道题共打了多少鱼的结果有很多,但求最少打的鱼的结果是3121条鱼。
可以验证一下3121结果是否正确。
a开始拿鱼: (3121 - 1) / 5 = 625
同理,bcde分别获得的鱼数(不包括其扔掉的鱼)b:499 c:399 d:319 e:255。
这道题最简单的方法就是枚举,从最小值开始,下面以JAVA代码来实现:
public class Test{ public static void main(String[] args) { int[] everybody_fish=new int[5];int[] temp=new int[5];for(int x=1;x<=1000;x++){ int sum=0; int i=0; for(i=0;i<everybody_fish.length;i++) { temp[i]=(x-1-sum)%everybody_fish.length;if(temp[i]!=0)break;everybody_fish[i]=(x-1-sum)/everybody_fish.length+1;sum+=everybody_fish[i]; } if(i==everybody_fish.length) { System.out.print("共钓了"+x+"条鱼");for(i=0;i<everybody_fish.length;i++){ System.out.print((char)('a'+i)+":"+(everybody_fish[i]-1)+" ");}System.out.print("最后剩余"+(x-sum)+"条鱼");System.out.print("扔了"+everybody_fish.length+"条鱼"); }} }}
运行上面的程序,会输出如下三行信息:
共钓了3121条鱼 a:624 b:499 c:399 d:319 e:255 最后剩余1020条鱼 扔了5条鱼
共钓了6246条鱼 a:1249 b:999 c:799 d:639 e:511 最后剩余2044条鱼 扔了5条鱼
共钓了9371条鱼 a:1874 b:1499 c:1199 d:959 e:767 最后剩余3068条鱼 扔了5条鱼
- 一道创新工场面试题详解:共打了多少鱼?
- 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼
- 也谈 创新工厂面试题详解:共打了多少鱼
- 创新工厂面试题详解:共打了多少鱼 -- 正解 递归求解法
- 创新工场面试题
- 算法编程:共打了多少鱼?
- 分享一个创新工场的面试题
- 腾讯,创新工场,淘宝面试题
- 创新工场一道笔试题
- 创新工场一道编程题
- 2014年创新工场面试题(华科)
- 面试:创新工场,淘宝等面试题--09/2015
- Linux系统下查看目录大小
- mysql ip限制问题
- 文件权限
- Android访问中央气象台的天气预报API得到天气数据 .
- Socket编程(不限Linux)
- 一道创新工场面试题详解:共打了多少鱼?
- 起图形界面
- 声音文件读取(未实现)--MP3 文件的ID3V1信息与ID3V2信息结构的分析
- 详细分析Linux动态库的使用方式
- POJ 3678 Katu Puzzle(2-SAT判断)
- 搭建KLEE环境步骤以及注意事项
- 使用hibernate自动生成数据库表
- 如何使用cocos2d来做一个简单的iphone游戏教程(第一部分)
- Qt 左键拖动窗口(没有标题栏)