zoukankan      html  css  js  c++  java
  • Benelux Algorithm Programming Contest 2016 Preliminary A. Block Game

    题意:

    给出n和m两个数,每次可以把较大的那个减少较小的数的整数倍(减完>=0)

    两个人轮流进行,最先将一个数减为0的人获胜

    问先手必胜还是必败

    令n<m

    若m是n的倍数,那么先手必胜

    若m>2*n,那么

    若(n,m%n)是必胜态,那么先手将m减至剩下m%n必胜

    若(n,m%n)是必败态,那么先手将m减至m%n+n必胜

    所以先手必胜

    若n<m<2*n,那此时只能进行一次m减n,重复这样的操作,直至到m>=2*n的状态

    判断进行了多少次m减n的操作

    偶数次先手必胜,奇数次先手必败

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    int main()
    {
        long long n,m;
        cin>>n>>m;
        if(n>m) swap(n,m);
        if(!(m%n)) printf("win");
        else if(m<2*n)
        {
            int t=0; 
            while(m<2*n)
            {
                ++t;
                m-=n;
                if(m<n) swap(n,m);
            }
            if(t&1) printf("lose");
            else printf("win");
        }
        else printf("win");
    }
    作者:xxy
    本文版权归作者和博客园共有,转载请用链接,请勿原文转载,Thanks♪(・ω・)ノ。
  • 相关阅读:
    Python自学笔记(12day)
    Python自学笔记(11day)
    Python自学笔记(10day)
    Python自学笔记(9day)
    Python自学笔记(8day)
    form标签的使用
    form标签的使用法
    img标签的使用方法
    <a></a>标签的使用
    html的标签
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/13628680.html
Copyright © 2011-2022 走看看