歐幾里德的遊戲

2022-05-01 06:09:12 字數 1006 閱讀 5265

歐幾里德的兩個後代stan和ollie正在玩一種數字遊戲,這個遊戲是他們的祖先歐幾里德發明的。給定兩個正整數m和n,從stan開始,從其中較大的乙個數,減去較小的數的正整數倍,當然,得到的數不能小於0。然後是ollie,對剛才得到的數,和m,n中較小的那個數,再進行同樣的操作……直到乙個人得到了0,他就取得了勝利。下面是他們用(25,7)兩個數遊戲的過程:

start:25 7

stan:11 7

ollie:4 7

stan:4 3

ollie:1 3

stan:1 0

stan贏得了遊戲的勝利。

現在,假設他們完美地操作,誰會取得勝利呢?

輸入格式:

第一行為測試資料的組數c。下面有c行,每行為一組資料,包含兩個正整數m, n。(m, n不超過長整型。)

輸出格式:

對每組輸入資料輸出一行,如果stan勝利,則輸出「stan wins」;否則輸出「ollie wins」

輸入樣例#1:

2

25 7

24 15

輸出樣例#1:

stan wins

ollie wins

最優策略是 大減小 ,不要被樣例解釋誤導,而後直接模擬就行,

為了提一下速度,找出兩組必勝態,一:大數能被小數整除;二:大數和小數互質。

程式碼實現:

1 #include2 #include3

using

namespace

std;

4long

long

c,n,m;

5bool p=1;6

intmain()

16if(p) printf("

stan wins\n");

17else printf("

ollie wins\n");

18}19return0;

20 }

今天考試題,直接騙分了(我才不是懶),40。。。

歐幾里德的遊戲

這題目好像輾轉相除。每次的兩個數 a b a b 分為兩種情況 一,此時狀態為 a b 1 那最完美的做法是取走 a b 1 b,那麼剩下的兩個數就為 a b b,b 對手唯一的做法就是取走b,剩下 b,a b 這樣就能保證每一次的初狀態都是由自己取,那等到 a b 0 時,就會獲勝。所以到這種初狀...

歐幾里德的遊戲

題目描述 歐幾里德的兩個後代stan和ollie正在玩一種數字遊戲,這個遊戲是他們的祖先歐幾里德發明的。給定兩個正整數m和n,從stan開始,從其中較大的乙個數,減去較小的數的正整數倍,當然,得到的數不能小於0。然後是ollie,對剛才得到的數,和m,n中較小的那個數,再進行同樣的操作 直到乙個人得...

歐幾里德的遊戲

數論 題目描述 歐幾里德的兩個後代stan和ollie正在玩一種數字遊戲,這個遊戲是他們的祖先歐幾里德發明的。給定兩個正整數m和n,從stan開始,從其中較大的乙個數,減去較小的數的正整數倍,當然,得到的數不能小於0。然後是ollie,對剛才得到的數,和m,n中較小的那個數,再進行同樣的操作 直到乙...