(zoj 3882 Help Bob)<>

来源:互联网 发布:手机制作纯音乐软件 编辑:程序博客网 时间:2024/06/01 10:32

Problem

传送门
题意:有1~n个数字,两个人轮流选择一个数字,并把它和它的约数擦去。擦去最后一个数的人
赢,问谁会获胜。


Solution

这个证明比较玄学

  • 假设有某种必胜策略(无论是先手还是后手)
  • 假如是先手必胜,那么Bob会按照必胜策略即可赢
  • 假如是后手必胜,那么Bob可以选择1,因为1是任何数的约数,相当于把后手的机会留给了自己
  • 因此无论如何,Bob都有必胜策略
  • 注意特判n==0

Code

// by spli#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;int n;int main(){    while(scanf("%d",&n)!=EOF){        if(n) puts("win");        else puts("fail");    }    return 0;}