| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts  | Current Contest Past Contests Scheduled Contests Award Contest  | |||||||||
做了好久,终于AC了,附:我的AC程序//2348	Euclid's Game	
#include<stdio.h>
int  min,max,temp;
bool swin;//swin==1可以理解为stan赢,也可以理解为轮到stan操作了
void check()
{
	if(swin)printf("Stan wins\n");
	else printf("Ollie wins\n");
}
int main()
{
	while(1)
	{
		scanf("%d%d",&max,&min);
		if(min==0&&max==0)break;
		if(max<min){temp=max;max=min;min=temp;}
		swin=1;
		while(1)
		{
			if(max/min>1){check();break;}//若大数是小数的2倍或2倍以上,则有操作权的人胜利;若大数是小数的1.x倍,则只有一种减的方法,如下行所示;
			temp=max%min;	max=min;	min=temp;
			if(min==0){check();break;}//<--题意的胜利条件
			swin=!swin;//减完后,操作权移到另一个人手里
		}
	}
	return 0;
}
Followed by: 
 Post your reply here:  | 
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator