nyoj 黑色帽子

时间:2021-11-02 06:41:54

黑色帽子

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
 
描述
        最近发现了一个搞笑的游戏,不过目前还没玩过。一个舞会上,每个人头上都戴着一顶帽子,帽子只有黑白两种,黑的至少有一顶。每个人都能看到别人帽子的颜色,可是看不见自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的的黑色帽子,就打自己一个耳光(nyoj  黑色帽子,都很自觉,而且不许打别人的哦),开灯,关灯,开灯……。因为都不想打自己耳光,所以不确定的情况下都不会打自己的,现在有n顶黑色帽子,第几次关灯才会听到有人打自己耳光?
 
输入
第一行只有一个整数m(m<=100000),表示测试数据组数。
接下来的m行,每行有一个整数n(n<=100000000),表示黑色帽子的顶数。
输出
输出第几次关灯能听到耳光声,每组输出占一行。
样例输入
1
2
样例输出
2

思路:

  如果有一顶黑帽子,a看到b带的是黑帽子,而b看到的全是白帽子,所以第一次关灯就有人打脸

  如果有两顶黑帽子,b看到a是黑帽子,a看到b是黑帽子,在第一次关灯后a看到b没打脸,则a想b一定看到有人带的是黑帽子,而a看到的除b之外全是白帽子,所以自己应该带的是黑帽子。

  如果有三顶黑帽子,按照两顶黑帽子的理论,第二次应该有人打,但是没人,应推断出这两顶带黑帽子的人还看到了有人带黑帽子,但是自己看到的出两顶黑帽子之外全是白帽子,所以第三次有人打

#include <iostream>
using namespace std;
int main()
{
int m;
cin>>m;
while(m-->0)
{
long long n;
cin>>n;
cout<<n<<endl;
}
return 0;
}