题目链接:点击查看
题目大意:给出k个黑球以及一个红球,两个人轮流摸球,摸到红球算赢,问先手有优势还是后手有优势还是都一样,若先手优势输出1,若后手优势输出2,若都一样输出0
题目分析:简单博弈,我们只要将前几种情况讨论一下答案就出来了:
当k=1时:很显然赢和输的概率都为1/2,所以输出0当k=2时:先手摸到黑球的概率为2/3,也就是说此时后手的局势变为了k=1的情况,后手胜利的概率为2/3 * 1/2=1/3,所以先手胜利的概率为2/3,先手有优势,输出1当k=3时:先手摸到黑球的概率为3/4,此时后手的局势变为了k=2的情况,则后手胜利的概率为3/4 * 2/3=1/2,所以先手胜利的概率为1/2,所以输出0当k=4时:先手摸到黑球的概率为4/5,此时后手的局势变为了k=3的情况,则后手胜利的概率为4/5 * 1/2=2/5,所以先手胜利的概率为3/5,所以输出1当k=5时:先手摸到黑球的概率为5/6,此时后手的局势变为了k=4的情况,则后手胜利的概率为5/6 * 3/5=1/2,所以先手胜利的概率为1/2,所以输出0如此往复,我们可以发现进入了一个循环,那么循环的关键就是k的奇偶,当k为奇数时我们输出0,当k为偶数时我们输出1即可
#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cstring> #include<algorithm> #include<stack> #include<queue> #include<map> #include<sstream> using namespace std; typedef long long LL; const LL inf=0x3f3f3f3f3f3f3f3f; const int N=15; int main() { // freopen("input.txt","r",stdin); int n; while(scanf("%d",&n)!=EOF) printf("%d\n",n&1?0:1); return 0; }