打地鼠
[描述]
小明听说打地鼠是一件很好玩的游戏,于是他也开始打地鼠。地鼠只有一只,而且一共有N个洞,编号为1到N排成一排,两边是墙壁,小明当然不可能百分百打到,因为他不知道地鼠在哪个洞。小明只能在白天打地鼠,而且每次打了都觉得好累,感觉再也不会打了,必须休息到第二天才能再次打地鼠,也就是说他每天只有一次打地鼠的机会。
地鼠非常聪明,为了尽可能的不被打到,它每天晚上都会跑向相邻的两个洞中的一个,如果一边是墙壁就只有往另一边跑,而且它很固执,每天晚上肯定会跑,也就是说不会连续呆在同一个洞。
尽管小明很累,但是他明白要想拿到一等奖,就必须打到地鼠,所以他想知道怎样才能在最短的天数内保证肯定打到地鼠。
[输入]
输入文件mouse只有一行,该行有一个整数N,表示N个洞并排在一起。地鼠在随机一个洞。
[输出]
输出文件mouse.out只有一行,该行有一个整数,表示小明肯定能打中至少需要的天数。
[样例]
mouse.in
1
mouse.out
1
mouse.in
4
mouse.out
4
[数据范围]
n<=100
我们的目的是使地鼠只能在一个洞里
我们假设1为可能出现地鼠,0为不可能,红色为敲的洞穴
先模拟n=4的情况
1 1 1 1
1 0 1 1 第一步
0 1 1 1
0 1 0 1 第二步
1 0 1 0
1 0 0 0 第三步
0 1 0 0 第四步
由此我们发现,敲的顺序是2~n-1,n-1~2
于是猜想ans=(n-2)×2
经模拟n=3,n=5,n=6均为正确
1 #include<cstdio> 2 int n; 3 int main() 4 { 5 freopen("mouse.in","r",stdin); 6 freopen("mouse.out","w",stdout); 7 scanf("%d",&n); 8 if (n==1) printf("1\n"); 9 if (n==2) printf("2\n"); 10 if ((n!=2)&&(n!=1)) printf("%d\n",(n-2)*2); 11 return 0; 12 }