我面试时最后两个智力题,看看你的智力!
来源:百度知道 编辑: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中选出了两个不同的整数,把积告诉孙膑,把和告诉庞涓;庞说:我虽然不能确定这两个数是什么,但是我肯定你也不知道这两个数字。孙说:我本来的确不知道,但是听你这么一说,我现在能够确定这两个数是什么了。庞说:既然你这么说,我现在也知道这两个数字是什么了。问这两个数字是什么,为什么?
大哥, 你可真厉害,从哪弄的答案啊?是自己弄的吗??
有人邀请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--;
}