题意

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 魔法珠的更多相关文章

  1. JS魔法堂:不完全国际化&本地化手册 之 理論篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  2. Atitit.研发管理如何避免公司破产倒闭的业务魔咒

    Atitit.如何避免公司破产倒闭的业务魔咒 1. 大型公司的衰落或者倒闭破产案例1 1.1. 摩托罗拉1 1.2. 诺基亚2 1.3. sun2 2. 为什么他们会倒闭?? 常见的一些倒闭元素2 2 ...

  3. JS魔法堂:不完全国际化&本地化手册 之 实战篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  4. WebComponent魔法堂:深究Custom Element 之 标准构建

    前言  通过<WebComponent魔法堂:深究Custom Element 之 面向痛点编程>,我们明白到其实Custom Element并不是什么新东西,我们甚至可以在IE5.5上定 ...

  5. WebComponent魔法堂:深究Custom Element 之 面向痛点编程

    前言  最近加入到新项目组负责前端技术预研和选型,一直偏向于以Polymer为代表的WebComponent技术线,于是查阅各类资料想说服老大向这方面靠,最后得到的结果是:"资料99%是英语 ...

  6. Sicily 1051: 魔板(BFS+排重)

    相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...

  7. Sicily 1150: 简单魔板(BFS)

    此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...

  8. BZOJ4516: [Sdoi2016]生成魔咒 后缀自动机

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> #inclu ...

  9. CSS魔法堂:Box-Shadow没那么简单啦:)

    前言  说起box-shadow那第一个想法当然就是用来实现阴影,其实它还能用于实现其他好玩的效果的,本篇就打算说说box-shadow的那些事. 二话不说看效果 3D小球 <style typ ...

随机推荐

  1. DoTween动画中的几种函数。

    1.transform.DOLocalMoveX(200, 1).From(true); 动画默认是从当前位置沿着X轴移动到x=200的位置. 加上Form变为从X=200的位置移动到当前位置,fro ...

  2. S2 深入.NET和C#编程 机试测试错题积累

    机试第一题:                              //创建文件流(路径 模式) FileStream fa = new FileStream(@"D:\\S2第一次全文 ...

  3. List在遍历中删除t元素

    法一:使用普通for循环遍历 注意: 1.从头开始循环,每次删除后 i  减一.             2.从尾开始循环. public class Main { public static voi ...

  4. C++类型转换的注意事项

    1.如果两个类型可以相互转换,就说他们是关联的. 2.隐式转换是指,由编译器自行转换,而不需要程序员介入的转换. 3.以下情况,编译器会发生隐式转换: 1)在大多数表达式中,比int类型小的整型值会被 ...

  5. 4.6 C++抽象基类和纯虚成员函数

    参考:http://www.weixueyuan.net/view/6376.html 总结: 在C++中,可以通过抽象基类来实现公共接口 纯虚成员函数没有函数体,只有函数声明,在纯虚函数声明结尾加上 ...

  6. 2.10 C++利用构造函数限制对象的创建

    参考: http://www.weixueyuan.net/view/6342.html 总结: 限制对象的创建.限制创建对象时能够按照我们需要的那样创建,而不能随意的创建对象. 类中显示地声明了任意 ...

  7. java中String的equals()和 ==

    String a=new String("java"); String b=new String("java"); System.out.println(a.e ...

  8. sql server 2012的AlwaysOn高可用

    一.Alway On高性能组件配置说明: 服务器集群节点:2 服务器的操作系统:windows 2008 Sql server版本:sql server 2012 此配置省略sql server的安装 ...

  9. ubantu 设置默认python3.叽叽叽的环境变量

    wkp 发表于 2017-8-22 17:49:08 | 只看该作者 sudo vi ~/.bashrc 在里面加一句 alias python='python3' 或者再简单一点 alias p=' ...

  10. OSPF路由协议(二)

    实验要求:使用OSPF路由协议,使每个路由器都能收集到所有网段 拓扑如下: 配置如下: R1enableconfigure terminalinterface l0ip address 192.168 ...