zoukankan      html  css  js  c++  java
  • nyoj 23-取石子(一)(博弈)

    23-取石子(一)


    内存限制:64MB 时间限制:3000ms Special Judge: No
    accepted:20 submit:33

    题目描述:

    一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子。游戏的规则是这样的。设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利。我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么?

    输入描述:

    第一行是一个正整数n表示有n组测试数据
    输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔。

    输出描述:

    对于每组数据,输出一行。如果先取的TT可以赢得游戏,则输出“Win”,否则输出“Lose”(引号不用输出)

    样例输入:

    2
    1000 1
    1 100

    样例输出:

    Lose
    Win

    分析:
      ①、取石子这类的问题自需要考虑最大值M与最小值m(PS:该题中最小可以取1)之和的情况
      ②、如果N%(M+1) > 0 这LL自需要取N%(M+1)就必赢
      ③、剩下的因为是(M+1)的倍数,所以当对手取x的时候,LL可以取M+1-x,酱紫LL就是那个最后取完石子的人

    步骤:
      直接分析N%(M + 1) 取余是否不为零,不为零LL必胜,反之他的对手必胜

    核心代码:
    1 if(N%(M+!)) printf("Win
    ");
    2 else printf("Lose
    ");

    C/C++代码实现(AC):

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <cstdio>
     6 #include <queue>
     7 #include <set>
     8 #include <map>
     9 #include <stack>
    10 
    11 using namespace std;
    12 
    13 int main ()
    14 {
    15     int t;
    16     scanf("%d", &t);
    17     while(t --)
    18     {
    19         int a, b;
    20         scanf("%d%d", &a, &b);
    21         if(a % (b+1)) printf("Win
    ");
    22         else printf("Lose
    ");
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    静态编译Qt4.4.3
    aenity
    qt linux 打包发布
    在處理影像資料上,Qt提供了QPixmap、QBitmap、QImage與QPicture等類別。
    bitrock 他家有绝活
    QT4.7 compile Qscilata you need change one line code
    QScintilla: QScintilla a Port to Qt v4 of Scintilla
    Scintilla and SciTE
    Take webpage screenshot from command line in Ubuntu Linux | Binary Tides
    tuoj.in
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9065287.html
Copyright © 2011-2022 走看看