威佐夫博弈:百练OJ:1067:取石子游戏
生活随笔
收集整理的這篇文章主要介紹了
威佐夫博弈:百练OJ:1067:取石子游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
威佐夫博弈(Wythoff's game):有兩堆各若干個物品,兩個人輪流從任一堆取至少一個或同時從兩堆中取同樣多的物品,規定每次至少取一個,多者不限,最后取光者得勝。
百練OJ:1067:取石子游戲
題目鏈接:1067:取石子游戲
1067:取石子游戲
?
描述
有兩堆石子,數量任意,可以不同。游戲開始由兩個人輪流取石子。游戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在兩堆中同時取走相同數量的石子。最后把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都采取最好的策略,問最后你是勝者還是敗者。
輸入
輸入包含若干行,表示若干種石子的初始情況,其中每一行包含兩個非負整數a和b,表示兩堆石子的數目,a和b都不大于1,000,000,000。
輸出
輸出對應也有若干行,每行包含一個數字1或0,如果最后你是勝者,則為1,反之,則為0。
樣例輸入
2 1 8 4 4 7樣例輸出
0 1 0解題代碼:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {double a = scanner.nextInt();double b = scanner.nextInt();if (a > b) {double tmp = b;b = a;a = tmp;}double c = (Math.pow(5, 0.5) + 1) / 2;if ((int) a == (int)( c * (b - a))) {System.out.println(0);} else {System.out.println(1);}}}} 狀態:?Accepted |
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的威佐夫博弈:百练OJ:1067:取石子游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百练OJ:4151:电影节
- 下一篇: 变形版汉诺塔:LeetCode:70爬楼