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