tyvj的题大部分都没题解啊- - 不过这样貌似会更好?感觉做这的题都需要自己动脑啊- - 虽然嘴上说着好烦然而心里觉得好评?
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 110
using namespace std;
int n,cnt;
int num[N];
int sg[1010];
int b[1100];
void get(int x)
{
cnt=1,b[cnt]=1;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
if(i*i==x)b[++cnt]=i;
else b[++cnt]=i,b[++cnt]=x/i;
}
}
}
int ssgg(int x)
{
if(sg[x]!=-1)return sg[x];
int v[1010];memset(v,0,sizeof(v));
get(x);
int tot=cnt,cal[110];
for(int i=1;i<=cnt;i++)cal[i]=b[i];
for(int i=1;i<=tot;i++)
{
int ans=0;
for(int j=1;j<=tot;j++)
{
if(i==j)continue;
ans^=ssgg(cal[j]);
}
v[ans]=1;
}
for(int i=0;;i++)if(!v[i])return sg[x]=i;
}
int main()
{
while(~scanf("%d",&n))
{
memset(sg,-1,sizeof(sg));sg[1]=0;
for(int i=1;i<=n;i++)scanf("%d",&num[i]);
int ans=0;
for(int i=1;i<=n;i++)
{
ans^=ssgg(num[i]);
}
if(ans)printf("freda\n");
else printf("rainbow\n");
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wzq_qwq/article/details/47009209