sg函数暴力求解
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int dp[N];
int sg(int x){
if(~dp[x])return dp[x];
unordered_set<int>q;
for(int i=2;i<x;i++)
{
if(x%i==0)q.insert(sg(i)^sg(x/i));
}
for(int i=0;;i++)
if(!q.count(i))return dp[x]=i;
}
int main(){
memset(dp,-1,sizeof dp);
int n;
cin>>n;
if(sg(n))cout<<"Johnson";
else cout<<"Nancy";
}