NBUT1582 比赛吃鸡腿

来源:互联网 发布:java的回收机制 编辑:程序博客网 时间:2024/04/29 18:52

典型博弈论问题:

问题模型:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

解决思路:A:设(ai,bi)(ai ≤bi  ,i=0,1,2,…,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。任给一个局势(a,b),如下公式判断它是不是奇异局势: ak =[k(1+√5)/2],bk= ak + k  (k=0,1,2,…,n 方括号表示取整函数)

威佐夫博奕:http://baike.baidu.com/link?url=sUug4rD3393leqaBKEa83L42G1SUrpAD8nh76SuNwTqSJ627a_7jjOBqYaq7XaJ4i3q2tq0DK29DcFS4jGZTC_

  • [1582] 比赛吃鸡腿

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • 集训要结束了大家准备好好吃一顿,吃什么呢,就决定是鸡腿了现在有两大桶鸡腿非常非常大的桶,分别有n,m个鸡腿,超神和性神决定来一个吃鸡腿大赛,他可以从一个桶里拿鸡腿或两个桶里一起那相同数量的鸡腿,谁先吃完所有鸡腿就是胜利,超神决定他先开始吃,问他能获胜吗
  • 输入
  • 每行输入n,m(0<n,m<100000000)
  • 输出
  • 每行输出一个数'1'代表获胜'0'代表失败
  • 样例输入
  • 2 18 4
  • 样例输出
  • 01
  • 提示
  • 来源
  • 本站或者转载
#include<iostream>using namespace std;int main(){int n,m;while(cin>>n>>m){if(n%(m+1)==0||m%(n+1)==0) cout<<"0"<<endl;else cout<<"1"<<endl;}return 0;}


0 0
原创粉丝点击