我面试时最后两个智力题,看看你的智力!

来源:百度知道 编辑:UC知道 时间:2024/05/12 10:06:53
第一题:
有人邀请A、B、C、D、E、F六个人参加一项会议,这六个人有些奇怪,因为他们有很多要求:
1、A、B至少有一个人参加会议;
2、A、E、F三人中有两个参加会议;
3、B和C两个人一致决定,要么两人都参加,要么两人都参加;
4、A、D两人中只要一人参加;
5、C、D两人中也只有一人参加;
6、如果D不去,那么E也决定不去。
那么最后究竟有哪些人参加了会议呢?为什么?
第二题:
鬼谷子有两个徒弟孙膑和庞涓。一天鬼谷子出了道题目:他从2到99中选出了两个不同的整数,把积告诉孙膑,把和告诉庞涓;庞说:我虽然不能确定这两个数是什么,但是我肯定你也不知道这两个数字。孙说:我本来的确不知道,但是听你这么一说,我现在能够确定这两个数是什么了。庞说:既然你这么说,我现在也知道这两个数字是什么了。问这两个数字是什么,为什么?
大哥, 你可真厉害,从哪弄的答案啊?是自己弄的吗??

解法如下:

  #include<iostream.h>
  #include<math.h>
  void change(bool a[],int size,int index);
  const int size=6;
  void main()
  {
  bool a[size];
  int Right=0;
  char ch='A';
  for(int i=0;i<pow(2,size);i++)
  {
  change(a,size,i);
  if((a[0] && a[1])==false) continue;
  if(a[0]+a[4]+a[5]!=2) continue;
  if(a[1]+a[2]==1) continue;
  if(a[0]+a[3]!=1) continue;
  if(a[2]+a[3]!=1) continue;
  if(a[3]==false && a[4]==true) continue;
  break;
  }
  for(i=0;i<size;i++)
  {
  cout<<ch<<":"<<a[i]<<endl;
  ch+=1;
  }
  }

  void change(bool a[],int size,int index)
  {
  for(int i=0;i<size;i++)
  a[i]=false;
  if (index>=pow(2,size)) return;
  i=size-1;
  while(index>0)
  {
  a[i]=index % 2;
  index=index/2;
  i--;
  }