• HUST 1372 marshmallow


    很简单的博弈题.....算几组能得到规律了。

    某个状态先手要赢 等价于 之前有一种状态是后手赢,先手可以保证让现在这个状态到达那个状态

    #include<cstdio>
    #include<cstring>
    #include<ctime>
    #include<algorithm>
    using namespace std;
    
    const int maxn = 10000 + 10;
    int a[maxn], b[maxn];
    int n, m;
    
    int gcd(int a, int b)
    {
        int t;
        while (b)
        {
            t = a%b;
            a = b;
            b = t;
        }
        return a;
    }
    
    void init()
    {
        for (int i = 1; i <= 10000; i++) a[i] = i, b[i] = i;
        for (int i = 3; i <= 10000; i = i + 3)
        {
            swap(b[i - 1], b[i - 2]);
        }
        b[10000] = 10001;
    
    }
    
    int main()
    {
        init();
        while (~scanf("%d%d", &n, &m)){
            int tot = 0;
            for (int i = 1; i <= 10000; i++)
                if (a[i] <= n&&b[i] <= m) tot++;
    
            int fz, fm;
            fz = tot;
            fm = m*n;
            if (tot == 0) fz = 0, fm = 1;
            else
            {
                int a=fz / gcd(fz, fm),b = fm / gcd(fz, fm);
                fz = a; fm = b;
            }
            printf("%d/%d
    ", fz, fm);
        }
        return 0;
    }
  • 相关阅读:
    C++中析构函数为什么要是虚函数
    依赖注入(IOC)
    ParseInt()与NaN()
    仿windows关机效果
    类似Tab的效果
    飞来飞去的广告
    Sql Server 三种连接
    JS日期处理
    绚丽的注册效果
    JS图片自动切换
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5211767.html
Copyright © 2020-2023  润新知