只需要算出n可以分解多少次即可。
就比如说12可以分一次分为3 4,4又可以分为2 2.
当次数为偶数时输出Nancy
奇数为Johnson
import java.util.*;
import java.math.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
public class Main {
public static HashMap<Integer,Long>map = new HashMap<>();
public static void main(String args[])throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int n = (int)in.nval;
long sum=0;
sum+=xpp(n);
if(sum%2==1)
out.println("Johnson");
else{
out.println("Nancy");
}
out.flush();
}
public static long xpp(int x)
{
long sum=0,max=0;
if(!map.containsKey(x))
{
for(int i=2;i*i<=x;i++)
{
sum=0;
if(x%i==0)
{
if(check(i)==true)
{
sum+=xpp(i);
}
if(check(x/i)==true)
{
sum+=xpp(x/i);
}
sum++;
}
max = Math.max(max,sum);
}
map.put(x,max);
return max;
}
else
return map.get(x);
}
public static boolean check(int x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
return true;
}
return false;
}
} 
京公网安备 11010502036488号