月薪3万 的一道面试题------看看你的IQ 
小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 
3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 
小明说:如果我不知道的话,小强肯定也不知道 
小强说:本来我也不知道,但是现在我知道了 
小明说:哦,那我也知道了
请根据以上对话推断出张老师的生日是哪一天 简单的想应该是6月4号,但想想月薪3万,就不太可能了
大家帮忙分析一下

解决方案 »

  1.   

    回复人: sdqhlyf(彩波) ( ) 信誉:93  2005-07-04 16:08:00  得分: 0  
     
     
       9月1号
      
     ==========================
    同意!!
      

  2.   

    http://borland.mblogger.cn/jinjazz/posts/20298.aspx
    --SQLServer2000建立测试环境
    set nocount on
    create table logic (Value char(2))insert into logic(value) 
    select('34')
    union select('35')
    union select('38')
    union select('64')
    union select('67')
    union select('91')
    union select('95')
    union select('c1')
    union select('c2')
    union select('c8')
    union select('c5')
    --测试语句--1、小明说:如果我不知道的话,小强肯定也不知道
    delete from logic  
    where left(value,1) in(
    select left(value,1) from logic a
    where  not  exists (
    select * from logic    
    where  right(a.value,1)=right(value,1) 
    and value<>a.value
       )
    )
    --2、小强说:本来我也不知道,但是现在我知道了
    delete a from logic a
    where  exists(
    select * from logic 
    where right(value,1)=right(a.value,1)
      and value<>a.value)
    --3、小明说:哦,那我也知道了
    delete a from logic a
    where  exists(
    select * from logic 
    where left(value,1)=left(a.value,1)
    and value<>a.value)
    select * from logic--删除测试环境
    drop table logic
    set nocount off--执行结果
    /*--------------------------
    Value 
    91
    ----------------------------*/
      

  3.   

    考IQ题本来就是为月薪3K的人准备的。
      

  4.   

    这句话“如果我不知道的话,小强肯定也不知道”怎么看怎么别扭-_-#,其实想表达的意思是:“小强现在肯定还不知道(在说完这句话之后就说不定了)”,小强只有当拿到N=7或者N=2时才有可能直接知道答案,因为只有这两个数字只分别出现了一次,而出现这两个数字的月份M分别是6和12,小明说那句话表明他拿的M是3或者9;而小明通过小强的话知道M是3或者9(M in [3, 9])之后就可以知道M的具体唯一值,说明N只在3月和9月备选答案中出现过一次,就排除N=5的可能。小明通过小强的话排除了N=5,如果小明拿的是M=3的话,仍然有两个日期,小明仍然无法根据已有条件得出答案,所以M=9才是唯一的答案。所以是9月1日