取石子問題

#include<iostream>

int main() 
{
	
int num;
std::cin>>num;
while(num--)
{
	int N,M;
  std::cin>>N>>M;
  if(N%(M+1)!=0)
	  std::cout<<"Win"<<std::endl;
  else
	  std::cout<<"Lose"<<std::endl;

	
}
	
	
}
巴什博奕(Bash Game):
      只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。
  最後取光者得勝。
      顯然,如果n=m+1,那麼由於一次最多隻能取m個,所以,無論先取者拿走多少個,
  後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現瞭如何取勝的法則:如果
  n=(m+1)r+s,(r爲任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走
  k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的
  取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。
 這個遊戲還可以有一種變相的玩法:兩個人輪流報數,每次至少報一個,最多報十
 個,誰能報到100者勝。
題目:http://acm.nyist.net/JudgeOnline/problem.php?pid=23

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