zoukankan      html  css  js  c++  java
  • 4.J

    题目连接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/J

    题目大意 游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。用到了威佐夫博奕。(a[k],b[k]) 满足a[k]=b[k]+k 称为奇异局势。 那么我们要如何判断一个局势是否为奇异局势?公式如下:

    a[k] = [k(1+√5)/2](a[k]这个方括号为下标运算符,[k(1+√5)/2]这个方括号为取整运算符),b[k] = a[k] + k 。
    博弈问题的博客连接  http://blog.csdn.net/luomingjun12315/article/details/45479073
    //模板
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int main()
    {
    
        int a,b;
        while(scanf("%d%d",&a,&b)!=EOF)
        {
            int k=abs(a-b);
            a=a<b?a:b;
            int ak;
            ak=floor(k*(1.0+sqrt(5.0))/2);//公式算出啊a[k]与给出的a[k]比较
            printf("%d
    ",ak!=a);//如果不相等,就不是奇异局势
        }
    
        return 0;
    }
  • 相关阅读:
    ios input输入不了
    ios遇到的坑
    Linux搭建GitLab并汉化
    在Linux环境下tomcat 指定 jdk或jre版本
    SpringBoot设置默认首页
    解决MariaDB中文乱码
    使用Hexo+GitHub搭建免费个人博客
    Linux上安装node和npm
    Linux配置SSH Key到GitHub
    Linux安装Git
  • 原文地址:https://www.cnblogs.com/Twsc/p/5738257.html
Copyright © 2011-2022 走看看