zoj3882 Help Bob 博弈

题意:两个人博弈,地上有n个标号从1~n的石子,然后每人依次拿走一个石头,在拿走一个石头的同时,它的因数石子也会被同时去掉,0<=n<=60。最后石子都被拿光后,没的石子拿的那个人输掉。给你不同的n,让你求先手胜还是负。

解题思路:想明白了很简单,想不通就做不出来。

假设存在一种n并且先手选2~n,是先手必败,那么后手就是必胜了,此时1已经被取走了,因为1是所有数的因数。那么如此来看,先手如果不选2~n,而选1,那么必败态就留给后手了,所以无论如何主动权都是在先手的人,先手可以选择是否先拿走1,所以先手必胜。当然,n=0除外。.


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
3
4
Sample Output1
win
win

Author:  ZHANG, Yunxiao
Source:  ZOJ Monthly, July 2014



#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <stack>
using namespace std;
typedef long long LL;
const int INF=0x7fffffff;
const int MAX_N=10000;

int a;
int main(){
    while(cin>>a){
        if(a==0)printf("fail\n");
        else printf("win\n");
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值