HW笔试逻辑题

roc_zhang 2007-04-02 03:52:30
1,经理有3个女儿,年龄和是13岁.年龄的乘积等于经理年龄.有个员工知道经理年龄,但是不能确定他3个女儿都是多大.这时经理告诉他"我只有一个女儿超过5岁",于是那个员工说"哦,那我知道了".
问:经理的三个女儿各是多大?

2,38只猪,要选出3只跑的最快的.但场地只能允许6只同时赛跑.
问:在没有计时器的情况下,怎样可以用最快,最好的方法选出最快的3只猪?
...全文
4963 95 打赏 收藏 转发到动态 举报
写回复
用AI写文章
95 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangxinyudream 2009-09-02
  • 打赏
  • 举报
回复
答案只有唯一的2,2,9。这个问题是这样来思考:那个员工既然已经知道经理年龄再经理没有提出"我只有一个女儿超过5岁 "的条件下是可以按照以下确定女儿的年龄的,
经理60岁:6-2-5
经理72岁:6-3-4
经理35岁:7-1-5
经理56岁: 7-2-4
经理63岁:7-3-3
经理32岁:8-1-4
经理48岁:8-2-3
经理27岁:9-1-3
因此之所以不知道就是因为肯定经理年龄有几种方案即
经理36岁:9-2-2,1-4-9
所以当经理说出了那个"我只有一个女儿超过5岁 "的条件后就可以确认就是9-2-2了。
iovng0_0 2008-11-20
  • 打赏
  • 举报
回复
学习了
fly1008 2008-08-05
  • 打赏
  • 举报
回复
学习
believetruelove 2007-10-18
  • 打赏
  • 举报
回复
第二题这样做,先让6头猪跑,选出跑的慢的三只卖掉,用卖掉的钱买个计时器.....
这年头,猪肉贵啊!!!
believetruelove 2007-09-08
  • 打赏
  • 举报
回复
mark

alasong 2007-04-04
  • 打赏
  • 举报
回复
哈哈,好熟悉的题目,第二题是牛,不是猪,大哥
ys0102 2007-04-04
  • 打赏
  • 举报
回复
对不起,还是不够严谨,应该是C1如果是第一名,那么应该是A1 B1 C1,如果C1是第二名,那么是A1 B1和第一名
ys0102 2007-04-04
  • 打赏
  • 举报
回复
ziptl()
增加一个情况,若C1在最后一次跑进前两名,但是B2没有进,那么最后则取A1 B1 C1
ziptl 2007-04-04
  • 打赏
  • 举报
回复
ys0102(晨晓)
若B2没有进入前两名,且B1其实是38只中跑得第二快的情况呢?比如a1,b1,c1.
但c1在最后一次跑在前两名,那么b1呢?
ys0102 2007-04-04
  • 打赏
  • 举报
回复
第二题,我觉得8次可以解决问题。
方法如大多数人说的一样:
6个一组分ABCDEF六组加G组两个 每组取前三标记为A1 A2 A3......(1~6轮)
让每组第一跑 取前三 假设A1 B1 C1分别为第一二三 那DEF组全部淘汰 现在A1肯定是最快的三只之一(只有G组两个可能比它快)那么再在其余的猪里找最快的两个 所以B3和C3也没有机会了
现在只剩下A2 A3 B1 B2 C1 C2 G1 G2八只(7轮)
A2 A3 B2 C1 G1 G2跑一轮 若第一名是B2则前三是A1B1B2,若第二名是B2则答案是A1加第一名加B1,若B2没有进入前两名则取A1和这一轮的前两名(8轮)

ufoyao0621 2007-04-04
  • 打赏
  • 举报
回复
应该是9,2,2吧!
我写程序跑了一下:
首先按常理经理年龄在20--100之间,如果经理的年龄在40岁以上,不用知道"只有一个女儿超过5岁"这个信息就可以知道各女儿的年龄.所以经理的年龄一定在40以下.
在40岁以下有27,32,35,36四种可能,而27,32和35也不需要知道"只有一个女儿超过5岁"这个信息就可以知道各女儿的年龄.所以只能是36,而36的年龄组合分别为(1,6,6)和(2,2,9),这样就需要"只有一个女儿超过5岁"来确定,所以答案为(2,2,9)
roc_zhang 2007-04-04
  • 打赏
  • 举报
回复
差不多了,结帖,给分
xingming9 2007-04-04
  • 打赏
  • 举报
回复
对于第一题: 经过分析发现最好的办法是由逆向推法,程序也好写点:
首先: x+y+z = 13;
x*y*z = age;
接着,由经理的话,我只有一个女儿大于5岁,那说明,对于同一个age,存在两个以上的女儿大于5岁的可能性.于是,我针对同一age,找到两个女儿大于5岁的可能情况,应该满足:
5<x<11 && 5<y<13-x && 0<z<13-x-y => 5<x<7 && 5<y<7 && 0<z<13-x-y
=> x=6,y=6,z=1
这是唯一符合条件的两个女儿都大于5岁,并且和要等于13的情况. 所以: age=6*6*1=36
然后需要满足 5<x<11 && 0<y<5 && 0<z<5 && x*y*z =36 => x=9,y=2,z=2
写程序也很容易可以得到
HiroKunimi 2007-04-04
  • 打赏
  • 举报
回复
mark
spoonl 2007-04-04
  • 打赏
  • 举报
回复
1000!有多少0
我觉得是 1000/(5*2)+(100-1000/(50*2)-10)+(1000/(50*2))*2 +(10-1-1)*2+1*3+1*3=242

个位为5的数字个数:1000/(5*2) ---每数造成1个0
个位是0&&十位不是5&&十位不是0的数字个数:100-1000/(50*2)-10 ---每数造成1个0
个位是0&&十位是5的数字个数:1000/(50*2) ----每数造成2个0
个位是0&&十位是0&&百位不是0&百位不是5的数字个数:10-1-1 -----每数造成2个0
个位是0&&十位是0&&百位是5的数字个数:1 ----每数造成3个0
个位是0&&十位是0&&百位是0&千位是0的数字个数:1 -----每数造成3个0

这样可以算出数字尾0个数吧??
spoonl 2007-04-04
  • 打赏
  • 举报
回复
第一题与MS的题目(如下)思路相同,答案是9,2,2。

  教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数

  甲说:“我猜不出”

  乙说:“我猜不出”

  甲说:“我猜到了”

  乙说:“我也猜到了”

  问这两个数是多少

第二题8次或9次 偶同意 “sionxu1986”方法
whslovexyp 2007-04-04
  • 打赏
  • 举报
回复
2 2 9很简单.员工只知道乘积却不能确定,说明有几组组合的乘积是一样的(229和166).又根据第二个条件,只有一个数>5,因此是229
三条猫 2007-04-04
  • 打赏
  • 举报
回复
mark
ZFelix 2007-04-04
  • 打赏
  • 举报
回复
第二题根本就是华为题没出好嘛!
如果是37头就刚好要8次,而且方法是唯一的.
如果是38头就要9次,而且最后一次不需6头同跑,方法也不唯一.
red_berries 2007-04-04
  • 打赏
  • 举报
回复
第二题好像还没人给出8次的正确解法,ys0102(晨晓)给出的解法最后一轮中如果出现B2,C1都没跑进前两名,就不行了
加载更多回复(74)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧