黑马程序员技术交流社区

标题: 一道很诡异的面试题 怎么解啊 [打印本页]

作者: 刘林虎    时间: 2013-4-12 21:29
标题: 一道很诡异的面试题 怎么解啊
6个人6分钟打包6个包裹,问60分钟打包60个包裹,需要多少人!!
作者: 。。。。。。    时间: 2013-4-12 21:34
本帖最后由 。。。。。。 于 2013-4-12 21:37 编辑

如果这个打包可以一个人完成,应该一个人就可以了。如果需要团队合作,那应该是6个人就够了。呵呵,也不是知道这是不是答案。

作者: 孙金鑫    时间: 2013-4-12 22:03
只需要6个人
作者: 黑马李文    时间: 2013-4-13 15:20
一个人就够了~
作者: 王九日    时间: 2013-4-13 15:28
我怎么感觉是10个人,是脑筋急转弯么,
作者: 李志敏    时间: 2013-4-13 16:16
本帖最后由 李志敏 于 2013-4-13 16:18 编辑

6个
  1. public class Pack {
  2.         public static void main(String[] args) {
  3.                 float pNum=6.0f;//已知人个数
  4.                 float hNum=6.0f;//已知分钟数
  5.                 float bNum=6.0f;//已知包裹数
  6.                
  7.                 float fNum=bNum/pNum/hNum;//一个人一分钟能打几个包裹
  8.                
  9.                 float newhNum=60.0f; //给定时间
  10.                 float newbNum=60.0f;//给定包裹数
  11.                 float newPnum=newbNum/newhNum/fNum;//所需要的人数
  12.                
  13.                 System.out.println("所需人数:"+(int)Math.ceil(newPnum)+"个");//如果计算结果不是整数 将取大于计算结果的最小整数
  14.         }
  15. }
复制代码

作者: 花伟昌    时间: 2013-4-13 21:21
我认为是6个人
作者: 王洪宇    时间: 2013-4-14 10:52
本帖最后由 王洪宇 于 2013-4-14 10:53 编辑

6个人6分钟打6个包,
则6个人1分钟打1个包。

那么6个人60分钟就会打60个包,
所以还是6个人。


或者这样理解:
1个人6分钟打1个包,
1个人60分钟打10个包,

那么6个人60分钟才能打60个包。
所以依然是6个人。
作者: Sword    时间: 2013-4-14 10:54
感觉是1个人吧
作者: 刚金波    时间: 2013-4-14 14:05
6个人吧,6个人可以看成一个整体
作者: 黄玉昆    时间: 2013-4-14 14:08
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
作者: 钟逊    时间: 2013-4-14 15:37
6个人啊
这样考虑:设打包6个包裹的工作量为1,那么打包60个包裹的工作量为10.
为了完成10的工作量,要么人员变10倍时间不变,要么人员不变时间变10倍。
题目告诉你时间已经变成了10倍,所以是第二种情况,人员不变。
所以还是6个人。
作者: 高新星    时间: 2013-4-14 15:52
应该是六个人
作者: 施家雄    时间: 2013-4-14 16:58
李志敏 发表于 2013-4-13 16:16
6个

你好!觉得你回答的很好。就是有几个地方不怎么懂,你帮我分析下,谢谢了。

float newPnum=newbNum/newhNum/fNum;//所需要的人数

System.out.println("所需人数:"+(int)Math.ceil(newPnum)+"个");

麻烦你给我分析下这两句代码。


作者: 李志敏    时间: 2013-4-14 17:23
施家雄 发表于 2013-4-14 16:58
你好!觉得你回答的很好。就是有几个地方不怎么懂,你帮我分析下,谢谢了。

float newPnum=newbNum/newh ...

因为:包裹数=人数*一个人一分钟打得包裹数*分钟数
所以:一个人一分钟打得包裹数=包裹数/人数/分钟数
即:
float fNum=bNum/pNum/hNum;//一个人一小时能打几个包裹
同理: 人数=包裹数/一个人一分钟打得包裹数*分钟数
float newPnum=newbNum/newhNum/fNum;//所需要的人数
其实这一步已经算出人数了 输出的时候 只不过 更严谨一点 因为人数肯定是个正整数
需要转换一下 Math.ceil()是java.lang.Math包下的一个方法 返回的是 大于该数的最小整数 如果你计算得到6.5个人 那肯定得需要7个人了吧? ceil返回的是double型 前面加个(int)强制转换成int类型 大概就是这样 可能描述不是很严谨。。。
作者: 施家雄    时间: 2013-4-14 20:11
李志敏 发表于 2013-4-14 17:23
因为:包裹数=人数*一个人一分钟打得包裹数*分钟数
所以:一个人一分钟打得包裹数=包裹数/人数/分钟数
  ...

谢谢了,你描述的非常好,一看我就懂了。谢谢你!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2