/* 这是一道想法题!因为任意一个friend number可以由两个friend number a,b 构成,且为ab+b+a; 想法就是在这个表达式中! 因为 ab+a+b=ab+a+b+1-1=(a+1)*(b+1)-1 假设 a=(c+1)*(d+1)-1;b=(e+1)*(f+1)-1; 得到 ab+a+b=(c+1)*(d+1)*(e+1)*(f+1)-1 带入数值化简就得到,ab+a+b=((1+1)^x)*((1+2)^y)-1 (x,y >=0) 就把题目转化为一个数如果过能写成 (2^x)*(3^y)-1 那他就是一个friend number! 注意 n = 0 的情况 * */ import java.util.*; import java.io.*; public class Main1719 { public static void main(String[] args) throws IOException { StreamTokenizer cin = new StreamTokenizer(new BufferedReader( new InputStreamReader(System.in))); int n; while (cin.nextToken() != StreamTokenizer.TT_EOF) { n = (int) cin.nval; if (fun(n) && n != 0) System.out.println("YES!"); else System.out.println("NO!"); } } static boolean fun(int n) { int temp = n + 1; while (temp % 2 == 0) { temp /= 2; } while (temp % 3 == 0) { temp /= 3; } if (temp == 1) return true; return false; } }