【数论】【博弈】1350:Euclid's Game

1350:Euclid's Game

 

题目大意:两人博弈,给出两个数a和b,较大数减去较小数的任意倍数,结果不能小于0,将两个数任意一个数减到0的为胜者。
思路:设a大于b,分三种情况:
1)a%b = 0:若Stan 先开始,则Stan胜。
2)b 3)a>=2*b:Stan可以通过选择来使自己胜。因为只有两种结果,且输赢一定交替出现,所以出现两种含两种以上的选择的时候此时能够作出“赢”的选择。

 

#include
#include
#include
using namespace std;
int stan;
void play(int a,int b)
{
	if (a=2 ||a%b==0)
		return ;
	stan=1-stan;
	play(a-b,b);
}
int main()
{
	int a,b;
	while(cin>>a>>b)
	{
		if (a==0 && b==0)
			break;
		stan=1;
		play(a,b);
		if (stan)
			cout<<"Stan wins"<

 

你可能感兴趣的:(机考刷题)