fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ld long double
  4. #define vc vector
  5. #define F first
  6. #define S second
  7. #define yes cout << "YES" << '\n'
  8. #define no cout << "NO" << '\n'
  9. #define el '\n'
  10. #define ln cout << '\n'
  11. #define pb push_back
  12. #define all(x) (x).begin(),(x).end()
  13. #define alli(n) int i = 0 ; i< n ;i++
  14. #define cin(v) for(auto& ele : v)cin>>ele
  15. #define print(v) for(auto& ele : v)cout << ele << ' '
  16. #define test1(x) cout << x << '\n'
  17. #define test(x,y) cout << x << ' ' << y << '\n'
  18. #define var int n;cin>>n
  19. #define var1 int n,m;cin>>n>>m
  20. #define vc2Dint vector<vector<int>>
  21. #define vc2Dll vector<vector<long long>>
  22. #define cin2D(v) for(auto& row : (v))for(auto& col : row)cin>>col
  23. #define print2D(v) for(auto& row : v){for(auto& col: row)cout << col << ' ';ln;}
  24.  
  25. using namespace std;
  26. ll mod = 1e15 , oo = 1e18;
  27.  
  28.  
  29. bool getBit(int x,int idx){ return x&(1<<idx);}
  30. int setBit1(int x,int idx){return x|(1<<idx);}
  31. int setBit0(int x,int idx){ return x&~(1<<idx);}
  32. int toggleBit(int x,int idx){return x^(1<<idx);}
  33. int cntBit(int x){int cnt=0;while(x){if(x%2)cnt++;x/=2;}return cnt;}
  34. // ================================== bitmask built in functions ==================================
  35. // __builtin_popcount(unsigned int)returns the number of set bits
  36. // __builtin_ffs(int) finds the index of the first (most right) set bit
  37. // __builtin_ctz(unsigned int) the count of trailing zeros(right zeros)
  38.  
  39. // ================================== math theory functions ==================================
  40. vc<ll> getDivisors(ll n){vc<ll> v;ll i = 1;for( ; i*i < n ; i++){if(n%i == 0){v.pb(i);v.pb(n/i);}}if(i*i == n)v.pb(i);return v;}
  41.  
  42. vc<bool> sieve(ll n){vc<bool> is_prime(n+1, true);is_prime[0] = is_prime[1] = false;for (int i = 2; i * i <= n; i++)
  43. {if (is_prime[i]) {for (int j = i * i; j <= n; j += i)is_prime[j] = false;}}return is_prime;}
  44.  
  45. bool isPrime(ll number) {if (number < 2) {return false;}if (number == 2 || number == 3 || number == 5) {return true;}
  46. if (number % 2 == 0 || number % 3 == 0 || number % 5 == 0) {return false;}
  47. for (ll i = 5; i*i<= number; i += 6) {if (number % i == 0 || number % (i + 2) == 0) {return false;}}return true;}
  48.  
  49. ll add(ll a,ll b,ll m){return ((a%m)+(b%m))%m;}
  50. ll mul(ll a,ll b,ll m){return ((a%m)*(b%m))%m;}
  51. ll sub(ll a,ll b,ll m){return ((a%m)-(b%m)+m)%m;}
  52. ll gcd(ll a, ll b){ return b == 0 ? a : gcd(b, a % b);}
  53. ll lcm(ll a, ll b){return (a / gcd(a, b)) * b;}
  54. ll factorial(ll n){if(n == 0)return 1;ll i = n , fact = 1;while(n/i != n){fact = mul(fact,i,998244353);i--;}return fact;}
  55. ll npr(ll n , ll r){return factorial(n)/factorial(n-r);}
  56. ll ncr(ll n, ll r){return npr(n,r)/factorial(r);}
  57.  
  58. // ================================== random functions ==================================
  59. void srour(){
  60. ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
  61. #ifndef ONLINE_JUDGE
  62. freopen("Input.txt", "r", stdin);freopen("Output.txt", "w", stdout);
  63. #endif
  64. }
  65.  
  66. ll power(ll x, ll y){ll res = 1;while (y > 0){if (y % 2 == 1)res = mul(res,x,mod);y=y>>1;x = mul(x,x,mod);}return res;}
  67. bool isDivisibleByPowerOf2(int n, int k) {return (n & (1<<k - 1)) == 0;}
  68. bool isPowerOfTwo(unsigned int n) {return n && !(n & (n - 1));}
  69.  
  70. /*
  71.  
  72.   ███████╗██████╗ ██████╗ ██╗ ██╗██████╗
  73.   ██╔════╝██╔══██╗██╔═══██╗██║ ██║██╔══██╗
  74.   ███████╗██████╔╝██║ ██║██║ ██║██████╔╝
  75.   ╚════██║██╔══██╗██║ ██║██║ ██║██╔══██╗
  76.   ███████║██║ ██║╚██████╔╝╚██████╔╝██║ ██║
  77.   ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
  78.  
  79.  
  80. ================================================== start of code ==================================================
  81.  
  82. 1 12
  83. 1000000000000
  84.  
  85.  */
  86.  
  87.  
  88. vc<ll> primeFactorization(ll n){
  89.  
  90. vc<ll> primes;
  91. for(ll i = 2 ; i*i <= n ; i++){
  92.  
  93. while(n%i == 0){
  94. n/=i;
  95. primes.pb(i);
  96. }
  97. }
  98.  
  99. if(n != 1){
  100. primes.pb(n);
  101. }
  102.  
  103. return primes;
  104. }
  105.  
  106.  
  107. void solve(){
  108. ll n,k;cin>>n>>k;
  109. vc<ll> v;
  110. for(alli(n)){
  111. ll num;cin>>num;
  112. vc<ll> vP = primeFactorization(num);
  113. v.insert(v.end(),vP.begin(),vP.end());
  114. }
  115.  
  116. map<ll,ll> primes;
  117. for(int i = 0 ; i< v.size() ; i++){
  118. primes[v[i]]++;
  119. }
  120.  
  121. for(auto&ele : primes){
  122. if(ele.S%k != 0){
  123. no;return;
  124. }
  125. }
  126.  
  127. yes;
  128. }
  129.  
  130.  
  131.  
  132. int main(){
  133. srour();
  134. int t = 1;
  135. // cin>>t;
  136. while(t--)
  137. solve();
  138. return 0;
  139. }
  140.  
Success #stdin #stdout 0s 5280KB
stdin
 2 2
 4 3
stdout
NO