摘要: 基础矩阵乘法……#include #include #define rep(i,n) for(int i=0;i>1,mod); tmp=mul(tmp,tmp,l,m,n,mod); if(x&1)tmp=mul(tmp,a,l,m,n,mod); return tmp;}int... 阅读全文
posted @ 2014-04-20 15:16 forever97 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 典型的尼姆博弈,在n对石子中,告诉你每堆的数目和每次从该堆最多可以取的数目,求最终谁将其取完。题解:SG(i)=mi%(li+1),求异或值即可。#include int main(){ int T,i,n,SG,m,l; scanf("%d",&T); while(T--){ ... 阅读全文
posted @ 2014-04-20 14:58 forever97 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题解:画图可得当横纵坐标均为奇数时为必败态…… #include int main(){ int a,b; while(scanf("%d%d",&a,&b),a!=0&&b!=0){ a%=2; b%=2; if(a&&b)puts("What a... 阅读全文
posted @ 2014-04-20 14:43 forever97 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题解:最简单的巴什博弈,取石子游戏……#include int main(){ int T,n,m; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); if(n%(m+1)==0)puts("Rabbit"... 阅读全文
posted @ 2014-04-20 14:27 forever97 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题解:尼姆博弈,SG(i)=i,要使当前堆可取,则数量必须大于其余所有堆的SG异或值,这样才可以减到其SG值使总异或值为0,又不可不取,所以不能取等号。#include using namespace std; int SG[105]; int main(){ in... 阅读全文
posted @ 2014-04-20 14:22 forever97 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题解:因为棋子可重叠,所以就等于取石子问题,即尼姆博弈,SG[i]=i,直接将输入数据异或即可。#include int main(){ int SG,n,a; while(scanf("%d",&n),n){ SG=0; while(n--){ ... 阅读全文
posted @ 2014-04-20 14:04 forever97 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题解:尼姆博弈,对于1至1000计算SG函数,每次取最小的前继值,SG值异或为0则为P-position。#include #include using namespace std; int fbi[30]; int SG[1001]; int m,n,p; int main(){ ... 阅读全文
posted @ 2014-04-20 13:51 forever97 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题解:巴什博弈,2^k+1=3N或2^k2=3N,所以3N为P-position,3N+r为N-position。#include int main(){ int n; while(~scanf("%d",&n)){if(n%3==0)puts("Cici");else puts("Ki... 阅读全文
posted @ 2014-04-20 13:23 forever97 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题解:巴什博弈,考虑P点为0,则N点在1至m之间,则k(m+1)+r为N点,所以只要满足n%(m+1)==0则先手必败,反之则先手必胜……#include int main(){ int T,n,m; scanf("%d",&T); while(T--){ scanf... 阅读全文
posted @ 2014-04-20 13:12 forever97 阅读(151) 评论(0) 推荐(0) 编辑