题目链接

此类博弈不需要考虑sg函数,只需要确定必胜态和必败态,解题思路一般为打败先打表找规律,而后找规律给出统一的公式。打表方式:给定初始条件(此题中为ok[0]=ok[1]=0),然后从低到高枚举某一状态的所有次态,若有存在必败次态,则当前状态为必胜态,否则当前状态必败。

题意:对单独一堆石子,支持两种操作:1、石子数-1;2、石子数变为原来石子数的某一因数。取走走后一堆或无法操作(面对n==0,坑啊。。)者为负。

先打表找下规律

 #include<bits/stdc++.h>
 using namespace std;
 typedef long long LL;

 ];

 void init()
 {
     ok[]=ok[]=;
     ; i<=; i++)
     {
         ])
         {
             ok[i]=;
             continue;
         }
         ; j<=i/; j++)    //分成等量j份,每份i/j个
              && !ok[i/j])
             {
                 ok[i]=;
                 break;
             }
     }
 }

 void print()
 {
     ; i<=; i++)
         printf("i=%d\tok[%d]=%d\n",i,i,ok[i]);
 }

 int main()
 {
     init();
     system("pause");
     print();
 }

打表

发现质数除了2和17都是败的,合数除了16,34和289都是赢的。我们发现2,4,8都是赢的(都可以通过-1到达必败态,而16的后继状态都是赢的,所以它是败的,而2^n(n>4)都能转化到16。同样的我们能说明17,34和2^n,17^m。

 #include<bits/stdc++.h>
 using namespace std;
 typedef long long LL;

 bool is_prime(LL x)
 {
     ) return false;
     ;i*i<=x;i++)
         ) return false;
     return true;
 }

 int T;
 LL n;

 int main()
 {
     cin>>T;
     while(T--)
     {
         cin>>n;
         bool flag;
         if(is_prime(n))
         {
             ||n==) flag=true;
             else flag=false;
         }
         else
         {
             ||n==||n==||n==) flag=false;
             else flag=true;
         }
         puts(flag? "TAK":"NIE");
     }
 }

AC代码

51nod 1831: 小C的游戏(Bash博弈 找规律)的更多相关文章

  1. 51nod 1831 小C的游戏

    小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...

  2. 51nod_1831: 小C的游戏(Bash博弈 找规律)

    题目链接 此类博弈不需要考虑sg函数,只需要确定必胜态和必败态,解题思路一般为打败先打表找规律,而后找规律给出统一的公式.打表方式:给定初始条件(此题中为ok[0]=ok[1]=0),然后从低到高枚举 ...

  3. 51nod 1831 小C的游戏(博弈论+打表)

    比较坑的题目. 题意就是:给出一堆石子,一次操作可以变成它的约数个,也可以拿只拿一个,不能变成一个,最后拿的人输. 经过打表发现 几乎所有质数都是先手必败的,几乎所有合数都是先手必胜的 只有几个例外, ...

  4. Gym - 101775L SOS 博弈 找规律

    题目:https://cn.vjudge.net/problem/Gym-101775L PS:训练赛中被这道题折磨的不轻,和队友反复推必胜态与必败态试图推导出公式或者规律,然后推的心态逐渐失控,,, ...

  5. HDU-1847 Good Luck in CET-4 Everybody! (博弈+找规律)

    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...

  6. 51nod 1714:B君的游戏(博弈 sg打表)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714 nim游戏的一个变形,需要打出sg函数的表 #incl ...

  7. HDU 4388 Stone Game II {博弈||找规律}

    Stone Game II Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. 1536 不一样的猜数游戏 dp思维 + 找规律

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1536 首先,要知道值为n的答案,则可以这么去想,知道值为n - 1的答案 ...

  9. HDU 1847 (博弈 找规律) Good Luck in CET-4 Everybody!

    为了提高题解质量还是简单证明一下:3的倍数是必败状态. 如果n % 3 = 1,那么拿走1个石子:如果n % 3 = 2,那么拿走两个石子,都将转移到3的倍数的状态.所以每个必胜状态都有一个后继是必败 ...

随机推荐

  1. RabbitMQ生产者消费者模型构建(三)

    ConnectionFactory:获取连接(地址,端口号,用户名,密码,虚拟主机等) Connection:一个连接 Channel:数据通信信道,可发送.接收消息 Queue:具体的消息存储队列 ...

  2. js初步简单的编程代码

    简单图片切换编码demo图片地址自行替换 简单图片切换编码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  3. python中将12345转换为54321

    #将12345转换为54321 a = 12345789 ret = 0 #当a不为零的时候,循环条件为true,执行语句块 while a : #对a求余数,第一次循环则把5求出来 last = a ...

  4. QT_study

    https://blog.csdn.net/a313827758/article/details/72736552 https://blog.csdn.net/xbcreal/article/deta ...

  5. HTTrack Website Copier 扫描规则

    +*.css +*.js -ad.doubleclick.net/* -mime:application/foobar+*.gif +*.jpg +*.jpeg +*.png +*.tif +*.bm ...

  6. loj#2332 「JOI 2017 Final」焚风现象

    分析 我们发现改变一个区间实际上只有两个端点的贡献变换 代码 #include<bits/stdc++.h> using namespace std; #define int long l ...

  7. JS-闭包(Closures)和let声明块级作用域变量

    闭包: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures 闭包是函数和声明该函数的词法环境的组合. let: https ...

  8. mysql 8.X.X版本多个ip限制访问

    随笔记录,由于客户要求数据库不同ip访问,查了很多,多数都是ip段或者所有ip可以访问: select user,host from user;可以查看某些用户可以访问的ip:但只能设置一个用户一条记 ...

  9. Java 语言的类、属性、方法各有哪些修饰符?简述各修饰符的区别

    1. 类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1.公共类修饰符 pub ...

  10. 关于 pip disreubution setuptools(unable to locate package pip)

    总是报找不到setuptools模块的错误 很是郁闷 安装pip的前提条件是要安装setuptools 或distribute. 安装distribute的方法: $ curl http://pyth ...