int[] T = Array.ConvertAll(Console.ReadLine().Split(), int.Parse); int n = T[0]; int x = T[1]; bool found = false; // aを1からn^(1/x)くらいまで試す for (int a = 1; a <= Math.Pow(n, 1.0 / x); a++) { double pow = Math.Pow(a, x); if (n % pow != 0) continue; int b = (int)(n / pow); // bが正整数かつ、aと異なるか確認 if (b > 0 && b != a && Math.Pow(a, x) * b == n) { found = true; break; } } Console.WriteLine(found ? "Yes" : "No");