打地鼠

[描述]

小明听说打地鼠是一件很好玩的游戏,于是他也开始打地鼠。地鼠只有一只,而且一共有N个洞,编号为1N排成一排,两边是墙壁,小明当然不可能百分百打到,因为他不知道地鼠在哪个洞。小明只能在白天打地鼠,而且每次打了都觉得好累,感觉再也不会打了,必须休息到第二天才能再次打地鼠,也就是说他每天只有一次打地鼠的机会。

地鼠非常聪明,为了尽可能的不被打到,它每天晚上都会跑向相邻的两个洞中的一个,如果一边是墙壁就只有往另一边跑,而且它很固执,每天晚上肯定会跑,也就是说不会连续呆在同一个洞。

尽管小明很累,但是他明白要想拿到一等奖,就必须打到地鼠,所以他想知道怎样才能在最短的天数内保证肯定打到地鼠。

[输入]

输入文件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 }

 

 

 

posted @ 2017-09-15 18:07  Z-Y-Y-S  阅读(534)  评论(2编辑  收藏  举报