//3389 Game (Staircase Nim)
/*
题意:有n个盒子编号为1-n,每个盒子里面有若干物品
当编号满足a>b && (a+b)%3==0 && (a+b)%2==1时
可以从a盒子中拿>=1个物品到b盒子中
思路:找规律后转换为Staircase Nim
满足此条件:(a+b)%3==0 && (a+b)%2==1的即是3个倍数并且是奇数:3、9、15、21,即%6==3
每六个拆开后会发现如下3组可以传递的关系:
1<--2<--7<--8<--13<--14
3<--6<--9<--12<--15<--18
4<--5<--10<--11<--16<--17
即3组Staircase Nim,3组结果异或即可。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 10005
int T,n;
int num[N];
int main(){
int i,j,ca = 1;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(i = 1; i <= n; ++i)
scanf("%d",&num[i]);
int sg1 = 0,sg2 = 0,sg3 = 0,sg = 0;
for(i = 2; i <= n; i += 6)
sg1 ^= num[i];
for(i = 6; i <= n; i += 6)
sg2 ^= num[i];
for(i = 5; i <= n; i += 6)
sg3 ^= num[i];
sg = sg1^sg2^sg3;
printf("Case %d: ",ca++);
puts(sg?"Alice":"Bob");
}
return 0;
}
分享到:
相关推荐
HDOJ题目分类HDOJ题目分类HDOJ题目分类
leetcode和hdoj 简介 主要用来记录算法刷题记录和一些模板 文件结构 leetcode 存放leetcode题目和周赛 atcoder 用于存放参与和vp的atcoder比赛 codeforces 用于存放参与和vp的cf比赛,比赛文件夹以比赛序号和div描述...
ACM ICPC HDOJ1002
ACM ICPC HDOJ1001
hdoj1001标程
hdoj上的资源,代码有注释,很不错的哦
hdoj1004,解题代码,答案代码,欢迎下载
ACM ICPC HDOJ1003
ACM ICPC HDOJ1008
杭州电子科技大学hdoj1002,大整数相加问题
杭州电子科大HDOJ
c语言 最短路 是hdoj上的一个最短路问题,写的很牛
ACM ICPC HDOJ1000
hdoj解题代码,题目为1000-1050
一些HDOJ上的DP题目的小总结,但愿能帮到那些想专攻DP的人吧
codj,hdoj的源码(50-60题)
hdoj 2013 多校训练3标程+解题报告
HDOJ 源代码 包含几百道HDOJ题目源码
hdoj1005 Number Sequence, 杭州电子科技大学oj题目代码
包括简单数学 组合数学 动态规划 贪心算法 母函数 搜索算法 组合博弈论 计算几何 等等