zoukankan      html  css  js  c++  java
  • 打地鼠

    [描述]

    小明听说打地鼠是一件很好玩的游戏,于是他也开始打地鼠。地鼠只有一只,而且一共有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
    ");
     9     if (n==2) printf("2
    ");
    10     if ((n!=2)&&(n!=1)) printf("%d
    ",(n-2)*2);
    11     return 0;
    12 }

     

     

  • 相关阅读:
    Exadata存储节点的CPU限制成功了没?
    如何减少Exadata计算节点CPU的Core数量
    如何选择适合你的HTAP数据库?
    小知识:Oracle中的层次查询
    小知识:使用MOS下载Oracle介质快速参考
    小知识:Flex ASM特性对集群资源显示的影响
    javaWeb request请求乱码、response响应中文乱码一站式解决方案
    java 文件File与byte[]数组相互转换的两种方式
    pr 如何调高导出视频的清晰度?
    pr 剪辑视频之剃刀用法
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/7527731.html
Copyright © 2011-2022 走看看