巴什博奕(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)的倍數,就能最後獲勝。
[cpp]
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//ifstream cin("acmilan.txt");
int a,b;
while(cin>>a>>b)
{
if(b>=a)
{
for(int i=a;i<=b;i++)
{
if(i!=b)
cout<<i<<" ";
else
cout<<i<<endl;
}
}
else
{
if(a%(b+1)==0)
cout<<"none"<<endl;
else
{
cout<<a%(b+1)<<endl;
}
}
}
//system("pause");
return 0;
}
作者:teibin