邂逅明下 HDU - 2897 (巴什博弈)

224 阅读1分钟

题目超长,讲了很多废话,其实就是巴什博弈的变形。

1、若当前石子共有n =(p+q)* r个,则先手必胜,必胜策略为:第一次取q个,以后每次若后手取K个,先手再取取(p+q-k)个,如此下去最后必剩下p个给后手,所以先手必胜。

2、若n =(p+q)* r + left个(1< left <= p)先手必败,必胜策略为:每次取石子活动中,若先手取k个,则后手去(p+q-k)个,那么最后剩下left个给先手,此时left <= p,先手必败。

若n =(p+q)* r + left个(p < left ),则先手可以拿走(q-1)个,则留下一个必败态也就是上面提到的2状态,先手必胜。

\

#include<iostream>
#include<cstdio> 
#include<cmath>
#include<algorithm> 
using namespace std;
int main(){
	int n,p,q,x;
	while(scanf("%d%d%d",&n,&p,&q) != EOF){
		x = n % (p + q);
		
		if(x>0&&x<=p)
		 puts("LOST");
		else
		  puts("WIN");
		
	}
	
	return 0;
}


\

本文已参与「新人创作礼」活动,一起开启掘金创作之路