码迷,mamicode.com
首页 > 其他好文 > 详细

51nod三大经典博弈(模板)

时间:2018-11-16 15:17:06      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:div   html   mes   int   方法   clu   col   数学   challenge   

真是令人惊讶,三大经典博弈都可以通过数学运算得到结论简单解决!

 

Bash游戏(数学余数方法)

关键:必输局面,谁面对(k+1)个石子这个局面必输!

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int T;
 7     cin>>T;
 8     while(T--)
 9     {
10         int n,k;
11         cin>>n>>k;
12 
13         if(n%(k+1)) cout<<A<<endl;
14         else cout<<B<<endl;
15     }
16 
17     return 0;
18 }

这个游戏刚开始我是找不到规律的,是通过k==2时推算出来的(数小游戏简单而且比较好找规律嘛,发现只要是3的倍数(谁面对3的倍数局面)先手必输)。

这里只不过把k=2扩展到了n维,套路还是一样。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int T;
 7     cin>>T;
 8     while(T--)
 9     {
10         int n;
11         cin>>n;
12 
13         if(n%3) cout<<A<<endl;
14         else cout<<B<<endl;
15     }
16 
17     return 0;
18 }

 

Nim游戏(数学异或方法)

关键:必输局面,谁面对2堆石子相同这个局面必输!

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int n;
 7     cin>>n;
 8     int ans=0;//0异或任何数都是那个数
 9     for(int i=1;i<=n;i++)
10     {
11         int x;
12         cin>>x;
13 
14         ans=ans^x;
15     }
16 
17     if(ans) cout<<A<<endl;
18     else cout<<B<<endl;
19 
20     return 0;
21 }

 

Bash游戏(数学黄金比例,黄金分割方法)

关键:必输局面,谁面对(k+1)个石子这个局面必输!

 

完。

51nod三大经典博弈(模板)

标签:div   html   mes   int   方法   clu   col   数学   challenge   

原文地址:https://www.cnblogs.com/redblackk/p/9968908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!