HackerRank - powers-game-1 【博弈论】

题意

给出 * 2^1 * 2^2 * 2^3 * 2^4 * 2^5 * 2^n 这一串东西 ,然后有两个玩家,*号是可以被替换掉的东西,可以换成+ 或者 - 然后最后的式子求出来后MOD 17 如果最后的结果 == 0 则 P2 wins 否则 P1 wins

思路

因为MOD 17 根据同余定理,我们可以 在替换*号之前就MOD 比如

2^1 2^2 2^3 2^4 2^5 2^6 2^7 2^8

2 4 8 16 15 13 9 1

然后我们发现 得到的都是一堆 0 - 15 的数字

因为都是双方出的都是最优的策略

我们发现 N = 8 的时候

分别是

1 16

2 15

4 13

8 9

这四组数据的特点是 相加都是 17

玩家一先出 如果玩家一对某一个数 换号 玩家二只要对配套数换成相同符号 即可

最后发现规律 只要N % 8 == 0 就是玩家二赢

AC代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <cstdlib>
#include <ctype.h>
#include <numeric>
#include <sstream>
using namespace std;
typedef long long LL;
const double PI = 3.14159265358979323846264338327;
const double E = 2.718281828459;
const int MAXN = 0x3f3f3f3f;
const int MINN = 0xc0c0c0c0;
const int maxn = 1e5 + 5;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
if (n % 8 ==0)
cout << "Second\n";
else
cout << "First\n";
}
}

最新文章

  1. java根据标点英文分词
  2. 怎样实现了捕获应用中的日志在android开发中
  3. MFC-CString 字符串分割
  4. windows7使用Source insight上远程修改ubuntu共享内核源码
  5. JS动画 | 用TweenMax实现收集水滴效果
  6. 更改OS序列号(slmgr)
  7. PHP验证码程序
  8. jsp base标签与meta标签学习小结
  9. Day3 Pyhon的六大数据类型
  10. Velocity(3)——#set指令
  11. CSS3技巧巧妙使用:not(:last-of-type)简化你的css代码
  12. valgrind检测内存泄漏
  13. python dict字典和set集合用法
  14. keepalived给LVS带来了什么
  15. HTML&amp;javaSkcript&amp;CSS&amp;jQuery&amp;ajax(五)
  16. SQL DCL 数据控制语句
  17. Unity shader学习之阴影,衰减统一处理
  18. Girls Off-White x Air Jordan 1 from JordansUnveil.com
  19. python之路----包
  20. PriorityQueue实现大顶堆

热门文章

  1. CRF++使用说明
  2. oracle 手动 备份 恢复
  3. 向量类Vector
  4. HTML 文档的基本结构
  5. MySQL防止重复插入唯一限制的数据 4种方法
  6. ICO图标的制作与应用
  7. python3----函数、匿名函数
  8. CNN 各layer汇总
  9. iOS开发之--storyboary下,拖拽一个tableview/collectionView/view 等,顶端下沉64个像素的处理方法
  10. 【BZOJ3829】[Poi2014]FarmCraft 树形DP(贪心)