➤ Problem Link : 274A. k
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,k; cin>>n>>k; ll arr[n]; unordered_map<ll,ll> parent; unordered_set<ll> st; for(ll i=0;i<n;i++) { cin>>arr[i]; } sort(arr,arr+n); for(ll i=0;i<n;i++) { st.insert(arr[i]); } map<ll,vector<ll> > mp; for(ll i=0;i<n;i++) { if(k!=1 && arr[i]%k==0 && st.find(arr[i]/k)!=st.end()) { parent[arr[i]]=parent[arr[i]/k]; mp[parent[arr[i]]].push_back(arr[i]); } else { vector<ll> v(0); mp[arr[i]]=v; parent[arr[i]]=arr[i]; } } ll ans=0,size; for(auto it=mp.begin();it!=mp.end();it++) { size=(*it).second.size() +1; // for itself ans+=size/2; if(size%2!=0) ans++; } cout<<ans; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!