HDU5973(威佐夫博弈+Java大数)
2017-05-03 13:06
197 查看
今天做题长知识了,除了巴什博奕,尼姆博奕,竟然还有威佐夫博弈
威佐夫博弈定义:
有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。
直接说结论了,若两堆物品的初始值为(x,y),且x
威佐夫博弈定义:
有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。
直接说结论了,若两堆物品的初始值为(x,y),且x
import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal one=new BigDecimal(1); BigDecimal two=new BigDecimal(2); BigDecimal three=new BigDecimal(3); BigDecimal five=new BigDecimal(5); BigDecimal l=one; BigDecimal r=three; for(int i=0;i<500;i++)//手动求高精度根号五 { BigDecimal mid=l.add(r).divide(two); if(mid.multiply(mid).compareTo(five)<0) { l=mid; } else { r=mid; } } BigDecimal gold=l.add(BigDecimal.ONE).divide(two); BigDecimal a,b; Scanner cin=new Scanner(System.in); while(cin.hasNext()) { a=cin.nextBigDecimal(); b=cin.nextBigDecimal(); if(b.compareTo(a)<0) { BigDecimal temp=a; a=b; b=temp; } a=a.setScale(0,BigDecimal.ROUND_DOWN); b=b.subtract(a).multiply(gold); b=b.setScale(0,BigDecimal.ROUND_DOWN); if(b.compareTo(a)==0) { System.out.println("0"); } else { System.out.println("1"); } } cin.close(); } }
相关文章推荐
- Game of Taking Stones (大数 + 威佐夫博弈 java写的)
- 【HDU 5973 && 51nod 1185】【威佐夫博弈+大数】
- HDU 5973 Game of Taking Stones 威佐夫博弈+大数
- 2016 ICPC 大连 C Game of Taking Stones 【威佐夫博弈+大数+高精度】
- hdu 5973 大数威佐夫博弈
- Game of Taking Stones (hdu5973)——2016大连现场赛C题 威佐夫博弈
- 博弈论-巴什博弈-斐波拉契数-尼姆游戏-拍卖土地-威佐夫博弈入门理解Java
- 51nod 1185 威佐夫游戏 V2 (博弈+大数乘法模拟)
- 51NOD 1185 威佐夫游戏 V2(大数运算 JAVA 模板)
- 【hdu5973】高精度威佐夫博弈
- HDU 5973-Game of Taking Stones(威佐夫博弈-JAVA BigDecimal)
- HDU-5973 威佐夫博弈+大数
- JAVA大数运算
- Java中国象棋博弈程序探秘[6]——游戏与界面
- Java中国象棋博弈程序探秘[5]——搜索算法
- 大数相乘 (JAVA版)
- 【转】 Java大数的一些整理体会
- Java中国象棋博弈程序探秘[3]——着法合法性判断
- Integer Inquiry hdu1047 java 处理大数
- Java中国象棋博弈程序探秘[5]——搜索算法