zoukankan      html  css  js  c++  java
  • 2013 ACM/ICPC 长春网络赛F题

    题意:两个人轮流说数字,第一个人可以说区间[1~k]中的一个,之后每次每人都可以说一个比前一个人所说数字大一点的数字,相邻两次数字只差在区间[1~k]。谁先>=N,谁输。问最后是第一个人赢还是第二个人赢。

    分析:必胜策略是这样的,想方设法抢到N-1,这样下一个人必然会>=N。

    第一个人抢到N-1的方法,就是先说一个数字与N-1的差是k+1的整数倍。

    因为在这之后另一个人无论说几,第一个人只要把数字补齐到与N-1差k+1的整数倍即可。

    例如另一个人让数字增加a,那么第一个人则让数字增加k+1-a。这样就必然可以抢到N-1。

    也有一种情况是第一个采取这种策略,如果N-1本来就是k+1的倍数,那么第一个人无论说几都无法达到与N-1差k+1的整数倍,这样第二个人就可以采取我们刚才说的补齐策略来抢到N-1。则第二个人获胜。

    综上,如果(N-1)%(k+1)==0则第二个人赢,否则第一个人赢。

    #include <cstdio>
    using namespace std;
    
    int N, k;
    
    int main()
    {
        while (scanf("%d%d", &N, &k), N | k)
        {
            if ((N - 1) % (k + 1) == 0)
                printf("Jiang
    ");
            else
                printf("Tang
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Ms.office2010安装教程
    Hadoop开发第3期---Hadoop的伪分布式安装
    Linux随笔---tar命令
    Hadoop开发第2期---虚拟机中搭建Linux
    appium(8)-locator strategies
    appium(7)-Automating mobile gestures
    appium(3)-Running Tests
    appium(4)-Automating mobile web apps
    appium(5)-Appium capabilities
    appium(2)-Setting up Appium
  • 原文地址:https://www.cnblogs.com/rainydays/p/3344398.html
Copyright © 2011-2022 走看看