zoj 3882 Help Bob(博弈)

来源:互联网 发布:怎样用淘宝客推广 编辑:程序博客网 时间:2024/05/17 03:05

题目链接

Help Bob

Time Limit: 2 Seconds      Memory Limit: 65536 KB

There is a game very popular in ZJU at present, Bob didn't meant to participate in it. But he decided to join it after discovering a lot of pretty girls playing it.

There are n stones on the ground and they are marked as 1 to n respectively. There will be 2 players in each competition. And the game rules are simple, A and B take turns to move. Each round, one of them can only take 1 number away, and then pick out all the divisors of the choosed number. When anyone who can not take away 1 number any longer, he will fail the whole game.

Input

There are multiple cases. Each case include an integer number n (0 ≤ n ≤ 100).

Output

For each case, A win, output "win". If not, output"fail".

Sample Input1

34

Sample Output1

winwin

题意:N个数1到N。两个人轮流操作,每次操作可以把一个数及其因子拿掉,不能拿的那个人输。问先手是的输赢。

题解:

若n为1先手赢

若n为0先手输

若n>1,若先手第一手不拿一,那么他所面临的状态和 先手拿一后后手所面临的状态是一样的。若第一手先手不拿一,一定必输。那么先手改变策勒拿一一定赢。若拿一必赢,则先手必赢。所以先手必赢。

代码如下:

#include<iostream>#include<stdio.h>#include<algorithm>#include<math.h>#include<queue>#include<string>#include<string.h>#include<stack>#include<vector>#include<set>#include<map>typedef long long LL;typedef unsigned long long LLU;double pi = acos(-1);const int nn = 210;const int inff = 0x3fffffff;const LL mod = 1000000007;using namespace std;int n;int main(){    while(scanf("%d",&n)!=EOF)    {        if(n==0)        {            puts("fail");        }        else            puts("win");    }    return 0;}


0 0
原创粉丝点击