CH3B16 魔法珠
题意
3B16 魔法珠 0x3B「数学知识」练习
描述
Freda和rainbow是超自然之界学校(Preternatural Kingdom University,简称PKU)魔法学院的学生。为了展示新学的魔法,Ta们决定进行一场对弈~~~
起初Freda面前有n堆魔法珠,其中第i堆有ai颗。Freda和rainbow可以轮流进行以下操作:
1.选择n堆中魔法珠数量大于1的任意一堆。记该堆魔法珠的数量为p,p有b1、b2……bm这m个小于p的约数。
2.施展魔法把这一堆魔法珠变成m堆,每堆各有b1、b2……bm颗魔法珠。
3.选择这m堆中的一堆魔法珠,施展魔法令其消失。
注意一次操作过后,魔法珠的堆数会增加m-2,各堆中魔法珠数量的总和可能会发生变化。
当轮到某人操作时,如果每堆中魔法珠的数量均为1,那么ta就输了。
Freda和rainbow都采取最好的策略,从Freda开始。请你预测一下,谁能获胜呢?
输入格式
本题仅有一个测试点,包含多组数据,以EOF结尾。
每组数据的第一行包含一个整数n。
第二行包含n个整数ai。
输出格式
对于每组数据,在两人均采取最佳策略的前提下,若Freda能获胜,输出freda;若Rainbow能获胜,输出rainbow。
样例输入
3
2 2 2
3
1 3 5
样例输出
freda
rainbow
数据范围与约定
- 1<=n<=100,1<=ai<=1000
 
        </article>
分析
这是一个公平组合游戏ICG,所以直接上SG函数即可。
总结一下,选一个走是mex,都要走是xor。
时间复杂度\(O(n^2)\)
代码
#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
    rg T data=0,w=1;rg char ch=getchar();
    while(!isdigit(ch)) {if(ch=='-') w=-1;ch=getchar();}
    while(isdigit(ch)) data=data*10+ch-'0',ch=getchar();
    return data*w;
}
template<class T>il T read(rg T&x) {return x=read<T>();}
typedef long long ll;
co int N=1001;
int n,sg[N];
int fj(int x,int*a){
	int tot=a[1]=1;
	for(int i=2;i*i<=x;++i)if(x%i==0){
		a[++tot]=i;
		if(i*i!=x) a[++tot]=x/i;
	}
	return tot;
}
int SG(int x){
	if(sg[x]!=-1) return sg[x];
	int a[N];
	int tot=fj(x,a);
	bool v[N];
	memset(v,0,sizeof v);
	for(int i=1,k;i<=tot;++i){
		k=0;
		for(int j=1;j<=tot;++j)
			if(i!=j) k^=SG(a[j]);
		v[k]=1;
	}
	int t=0;
	while(v[t]) ++t;
	return sg[x]=t;
}
int main(){
//	freopen(".in","r",stdin),freopen(".out","w",stdout);
	memset(sg,-1,sizeof sg);
	sg[1]=0;
	while(~scanf("%d",&n)){
		int k=0;
		for(int i=1;i<=n;++i) k^=SG(read<int>());
		puts(k?"freda":"rainbow");
	}
	return 0;
}
												
											CH3B16 魔法珠的更多相关文章
- JS魔法堂:不完全国际化&本地化手册 之 理論篇
		
前言 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...
 - Atitit.研发管理如何避免公司破产倒闭的业务魔咒
		
Atitit.如何避免公司破产倒闭的业务魔咒 1. 大型公司的衰落或者倒闭破产案例1 1.1. 摩托罗拉1 1.2. 诺基亚2 1.3. sun2 2. 为什么他们会倒闭?? 常见的一些倒闭元素2 2 ...
 - JS魔法堂:不完全国际化&本地化手册 之 实战篇
		
前言 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...
 - WebComponent魔法堂:深究Custom Element 之 标准构建
		
前言 通过<WebComponent魔法堂:深究Custom Element 之 面向痛点编程>,我们明白到其实Custom Element并不是什么新东西,我们甚至可以在IE5.5上定 ...
 - WebComponent魔法堂:深究Custom Element 之 面向痛点编程
		
前言 最近加入到新项目组负责前端技术预研和选型,一直偏向于以Polymer为代表的WebComponent技术线,于是查阅各类资料想说服老大向这方面靠,最后得到的结果是:"资料99%是英语 ...
 - Sicily 1051: 魔板(BFS+排重)
		
相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...
 - Sicily 1150: 简单魔板(BFS)
		
此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...
 - BZOJ4516: [Sdoi2016]生成魔咒 后缀自动机
		
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #inclu ...
 - CSS魔法堂:Box-Shadow没那么简单啦:)
		
前言 说起box-shadow那第一个想法当然就是用来实现阴影,其实它还能用于实现其他好玩的效果的,本篇就打算说说box-shadow的那些事. 二话不说看效果 3D小球 <style typ ...
 
随机推荐
- ubuntu compile openjdk87
			
0. use oracle JDK,not OpenJDK 1. 遇到错误Error:./gamma: relocation error: /usr/lib/jvm/java-7-openjdk-am ...
 - 使用gitblit搭建自己的代码存储仓库
			
一.基本准备: 服务器:阿里云的windows server 2008 r2 64位 相关软件: 1.java的jdk包: 2.gitblit程序包(这个不用安装,是绿色的). 二.安装步骤 1.下载 ...
 - Linux3.10.0块IO子系统流程(4)-- 为请求构造SCSI命令
			
首先来看scsi_prep_fn int scsi_prep_fn(struct request_queue *q, struct request *req) { struct scsi_device ...
 - Cracking The Coding Interview 3.6
			
// Write a program to sort a stack in ascending order. You should not make any assumptions about how ...
 - vuesheng生命周期
			
对着官网的demo写例子,碰到了生命周期钩子方法,之前只是根据官网的图,了解了大概, 现在忍不住想去深扒一下,因此找了几个博客看了下,受益匪浅,故此笔记: 参考:http://www.cnblogs. ...
 - Comparable和Comparator接口是干什么的?列出它们的区别。
			
Comparable和Comparator接口是干什么的?列出它们的区别. Java提供了只包含一个compareTo()方法的Comparable接口.这个方法可以个给两个对象排序.具体来说,它返回 ...
 - Jmeter响应中中文乱码怎么解决
			
在jmeter的bin目录下有一个jmeter.properties的文件,打开它,搜索sampleresult.default.encoding,把它的注释打开,也就是把最前面的#去掉,改成samp ...
 - setTimeout 与 闭包。。。
			
先看下面一个比较坑的代码 for (var i=1; i<=5; i++) { setTimeout( function timer() { console.log(i); }, i*1000 ...
 - SQL拼接大法
			
SQL拼接大法: Step1:括号先写上() Step2:在括号内写上(, , , , , ,) Step3:再写上单引号(,' ' ...
 - django面试五
			
http和https的区别https协议需要到ca申请证书,一般免费证书很少,需要交费. 注:CA - certificate authority,身份认证,权威机构认证,CA认证: http是超文本 ...