程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva 10368 - Euclid's Game(博弈)

uva 10368 - Euclid's Game(博弈)

編輯:C++入門知識

題目鏈接:uva 10368 - Euclid's Game

題目大意:給出兩個數,兩個人做一個游戲,每次有stan開始操作,每次操作可以從最大的數中取走若干個小的數,即a-kb,a為比較大的數,b為比較小的數,kb為取走的值,k必須為整數,並且kb≤a。如果不能順利執行操作,則對手勝利。

解題思路:模擬,直到k的最大值不為1時,當前操作者就掌握了主動權,既可以獲勝。特殊情況為a=b的時候,stan勝。

#include 
#include 
#include 

using namespace std;

int main () {
    int a, b;
    while (scanf("%d%d", &a, &b) == 2 && a + b) {
        int s = 0;

        if (a != b) {
            int x = max(a, b);
            int y = min(a, b);

            while (true) {
                if (x / y > 1)
                    break;
                x = x%y;
                swap(x, y);
                s = 1 - s;
            }
        }
        printf("%s wins\n", s ? "Ollie" : "Stan");
    }
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved