zoukankan      html  css  js  c++  java
  • HDU 1525

    题意略。

    思路:

    我们总是假设a > b,那么现在有两种情况:

    1.a - b < b                                      2.a - b >= b

    在处于第一种情况下,我们只有一种选择,也即把 a 变成 b,而原有的b变成 a - b。

    在第二种情况时,我们分类考虑一下:

    1.当 (b,a % b) 为必败态时,我们直接从当前状态转移过去,可以使我们当前状态为必胜态。

    2.当 (b,a % b) 为必胜态时,我们直接从当前状态转移到 (a % b + b,b) ,逼迫对手将我们推向必胜态。

    也就是说,当 a / b >= 2 时,当前操作的人必胜。

    详见代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
        int a,b;
        while(scanf("%d%d",&a,&b) == 2 && (a + b)){
            bool jud = true; 
            if(a < b) swap(a,b);
            while(true){
                if(a / b >= 2 || a % b == 0) break;
                else{
                    int temp = a % b;
                    a = b,b = temp;
                }
                jud = !jud;
            }
            printf("%s
    ",jud ? "Stan wins" : "Ollie wins");
        }
        return 0;
    }
  • 相关阅读:
    cf B. Sonya and Exhibition
    cf B. Sonya and Exhibition
    1000C
    1000C
    AOE网打印所有的关键路径
    AOE网打印所有的关键路径
    拓扑排序判断有向图是否成环
    拓扑排序判断有向图是否成环
    迭代器
    Dictionary Aizu
  • 原文地址:https://www.cnblogs.com/tiberius/p/9352865.html
Copyright © 2011-2022 走看看