博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5973 Aninteresting game 威佐夫博奕(Wythoff Game)
阅读量:4617 次
发布时间:2019-06-09

本文共 2135 字,大约阅读时间需要 7 分钟。

HDU 5973:

题意:

  有两堆石子,每次可以从一堆石子中取任意个,或者从两堆石子中取相同个数的石子。两个人轮流用这种策略取石子,谁取完所有的石子就算胜利。问先手胜还是后手胜。

思路:

  一模一样的威佐夫博奕(Wythoff Game),结论的是,假设a>b,那么如果((1+sqrt(5))* (a - b))/2 == b ,那么先手必输。但是这道题的数据比较大,所以需要java做高精度。

import javax.swing.*;import java.util.Scanner;import java.math.BigDecimal;public class Main{    public static void main(String[] args) {        BigDecimal One = new BigDecimal(1);        BigDecimal Two = new BigDecimal(2);        BigDecimal Five = new BigDecimal(5);//        BigDecimal two = new BigDecimal(2);        //        System.out.println(One.compareTo(Two));//-1        BigDecimal le = new BigDecimal(2);        BigDecimal ri = new BigDecimal(3);        BigDecimal mid = le.add(ri).divide(Two);                for(int i= 1; i<=400; i++) {            mid = le.add(ri).divide(Two);            if(mid.multiply(mid).compareTo(Five) == -1 ) {                le = mid;            }            else ri = mid;        }        BigDecimal k = (One.add(mid)).divide(Two);        //System.out.println(k);        Scanner in = new Scanner(System.in);                while(in.hasNext()) {            BigDecimal a = in.nextBigDecimal();            BigDecimal b = in.nextBigDecimal();            BigDecimal det = new BigDecimal(0);            int flag = 1;            if(a.compareTo(b) == -1)            {                det = b.subtract(a);                det = det.multiply(k);                //long l  = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整                det = det.setScale( 0, BigDecimal.ROUND_DOWN );                if(det.compareTo(a) == 0) {                    flag = 0;                }            }            else {                det = a.subtract(b);                det = det.multiply(k);                //long l  = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整                det = det.setScale( 0, BigDecimal.ROUND_DOWN );                if(det.compareTo(b) == 0) {                    flag = 0;                }            }            System.out.println(flag);                                    }                        }}
HDU 5973

 

转载于:https://www.cnblogs.com/ckxkexing/p/10003273.html

你可能感兴趣的文章
php写一个判断是否有cookie的脚本
查看>>
Mac配置Fiddler抓包工具
查看>>
转:Java并发集合
查看>>
Word截图PNG,并压缩图片大小
查看>>
Python项目对接CAS方案
查看>>
mysql产生随机数
查看>>
编程风格
查看>>
熟悉常用的Linux命令
查看>>
易之 - 我是个大师(2014年3月6日)
查看>>
Delphi中窗体的事件
查看>>
file_get_contents()获取https出现这个错误Unable to find the wrapper “https” – did
查看>>
linux vi编辑器
查看>>
js树形结构-----(BST)二叉树增删查
查看>>
contract
查看>>
Python语言编程
查看>>
[poj 1469]Courses
查看>>
vue+element-ui实现表格checkbox单选
查看>>
测试开发学习进阶教程 视频&PDF
查看>>
C#基础-连接Access与SQL Server
查看>>
autofac
查看>>