Pagini recente » Cod sursa (job #509900) | Cod sursa (job #932992) | Cod sursa (job #1361385) | Cod sursa (job #891333) | Cod sursa (job #1365699)
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;
typedef int var;
ifstream fin("bowling.in");
ofstream fout("bowling.out");
vector<var> V;
var SG[50002];
bool COMP[50002];
bool C[50002];
var sparge_grundy(var n) {
if(COMP[n]) {
return SG[n];
}
memset(C, 0, sizeof(C));
for(var i=1; i<=2; i++) {
for(var a=0; a<=n-i; a++) {
C[SG[a]^SG[n-a-i]] = 1;
}
}
var i;
for(i=0; C[i] == 1; i++);
SG[n] = i;
COMP[n] = 1;
return SG[n];
}
var S_G[] = {1, 2, 8, 1, 4, 3, 2, 1, 4, 2, 6, 4, 1, 2, 7, 1, 4, 3, 2, 1, 4, 6, 7, 4, 1, 2, 8, 5, 4, 7, 2, 1, 8, 6, 7, 4};
var sg(var n) {
if(n==0) return 0;
if(n==3) return 3;
if(n==39) return 3;
n--;
n%=36;
return S_G[n];
}
int main() {
var n, t;
bool b;
COMP[0] = 1;
COMP[1] = 1;
SG[1] = 1;
fin>>t;
while(t--) {
fin>>n;
var nr = 0;
V.clear();
for(var i=1; i<=n; i++) {
fin>>b;
if(b == 1) {
nr++;
} else {
if(nr)
V.push_back(nr);
nr = 0;
}
}
if(nr) {
V.push_back(nr);
}
var rez = 0;
for(auto v : V) {
rez ^= sg(v);
}
if(rez == 0) {
fout<<"Fumeanu\n";
} else {
fout<<"Nargy\n";
}
}
return 0;
}