➤ 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!!
