• HDU 1525 Euclid Game


    题目大意:

    给定2个数a , b,假定b>=a总是从b中取走一个a的整数倍,也就是让 b-k*a(k*a<=b)

    每人执行一步这个操作,最后得到0的人胜利结束游戏

    (0,a)是一个终止态P(必胜态)

    始终假设b>=a 

    那么(a,b)b%a==0 , 那么就是 必败态 N

    如果2*a>b>a 那么只能选择进入 (a , b-a)不确定什么状态

    因为每个人都很聪明,所以对于碰到一个a ,b的局面

    如果 b>a*2 , 那么应该知道 (a , b%a) 是不是一个必胜态,如果不是,那么这个聪明人就总会进入(a , b%a+a) ,就能逼迫对方进入 (a , b%a) 这个必败态

    如果 (a , b%a) 是一个必胜态,那么聪明人就会自己进入这个状态

    所以 b>2*a的时候,下个人肯定是必胜的,也就是下个人必然进入必胜态,所以这是一个必败态

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 bool dfs(int a , int b)
     7 {
     8     if(a>b) swap(a , b);
     9     if(a == 0) return true;
    10     if(b%a == 0 || b > 2*a) return false;
    11 
    12     bool flag1 = dfs(a , b%a);
    13     bool flag2 = false;
    14     if(b > 2*a) flag2 = dfs(a , b%a+a);
    15     if(flag1 || flag2) return false;
    16     return true;
    17 }
    18 
    19 int main()
    20 {
    21    // freopen("a.in" , "r" , stdin);
    22     int a,b;
    23     while(scanf("%d%d" , &a , &b) , a||b)
    24     {
    25         if(dfs(a , b)) puts("Ollie wins");
    26         else puts("Stan wins");
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    Solr4.8.0源码分析(16)之SolrCloud索引深入(3)
    Solr4.8.0源码分析(15) 之 SolrCloud索引深入(2)
    Solr4.8.0源码分析(14)之SolrCloud索引深入(1)
    Solr In Action 笔记(4) 之 SolrCloud分布式索引基础
    Solr In Action 笔记(3) 之 SolrCloud基础
    change buffer太复杂了
    mtr语言真是逆天了
    mysql自动化测试第一个例子
    mysql mtr写入数据
    垃圾规范
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4250681.html
Copyright © 2020-2023  润新知