zoukankan      html  css  js  c++  java
  • hdu 2188 选拔志愿者(博弈)

    解题实录:

          只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 

          显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。

                因此我们发现了如何取胜的法则:如果n=m+1r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k≤m)个,

          那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。

          总之,要保持给对手留下(m+1)的倍数,就能最后获胜。

    #include<stdio.h>
    int main()
    {
        int T,n,m;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d %d",&n,&m);
            if(n%(m+1)==0)printf("Rabbit\n");
            else printf("Grass\n");
        }
        return 0;
    }

     

  • 相关阅读:
    Linux入门
    服务器核心知识
    跨域
    DRF的解析器和渲染器
    DRF的分页
    DRF 权限 频率
    DRF 版本 认证
    Django Rest Framework 视图和路由
    Serializers 序列化组件
    六、Java NIO 通道之间的数据传输
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3005964.html
Copyright © 2011-2022 走看看