NBUT1582 比賽喫雞腿

典型博弈論問題:

問題模型:有兩堆各若干個物品,兩個人輪流從某一堆或同時從兩堆中取同樣多的物品,規定每次至少取一個,多者不限,最後取光者得勝。

解決思路:A:設(ai,bi)(ai ≤bi  ,i=0,1,2,…,n)表示兩堆物品的數量並稱其爲局勢,如果甲面對(0,0),那麼甲已經輸了,這種局勢我們稱爲奇異局勢。前幾個奇異局勢是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。任給一個局勢(a,b),如下公式判斷它是不是奇異局勢: ak =[k(1+√5)/2],bk= ak + k  (k=0,1,2,…,n 方括號表示取整函數)

威佐夫博奕:http://baike.baidu.com/link?url=sUug4rD3393leqaBKEa83L42G1SUrpAD8nh76SuNwTqSJ627a_7jjOBqYaq7XaJ4i3q2tq0DK29DcFS4jGZTC_

  • [1582] 比賽喫雞腿

  • 時間限制: 1000 ms 內存限制: 65535 K
  • 問題描述
  • 集訓要結束了大家準備好好喫一頓,喫什麼呢,就決定是雞腿了現在有兩大桶雞腿非常非常大的桶,分別有n,m個雞腿,超神和性神決定來一個喫雞腿大賽,他可以從一個桶裏拿雞腿或兩個桶裏一起那相同數量的雞腿,誰先喫完所有雞腿就是勝利,超神決定他先開始喫,問他能獲勝嗎
  • 輸入
  • 每行輸入n,m(0<n,m<100000000)
  • 輸出
  • 每行輸出一個數'1'代表獲勝'0'代表失敗
  • 樣例輸入
  • 2 1
    8 4
  • 樣例輸出
  • 0
    1
    
  • 提示
  • 來源
  • 本站或者轉載
#include<iostream>
using namespace std;
int main(){
	int n,m;
	while(cin>>n>>m){
		if(n%(m+1)==0||m%(n+1)==0) cout<<"0"<<endl;
		else cout<<"1"<<endl;
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章