File tree Expand file tree Collapse file tree
Problems/Mathematics/Day-01/sol/Hardik Singh Rana Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+
4+ #define ll long long
5+ #define pb push_back
6+ #define f (i,a,b ) for (ll i=a;i<b;i++)
7+ #define fb (i,a,b ) for (ll i=a;i>=b;i--)
8+ #define vi vector<int >
9+ #define vl vector<ll>
10+ #define pii pair<int ,int >
11+ #define pll pair<ll,ll>
12+ #define vpii vector<pii>
13+ #define vpll vector<pll>
14+ #define all (x ) (x).begin(), (x).end()
15+ #define fast_io ios::sync_with_stdio (false ); cin.tie(0 ); cout.tie(0 );
16+
17+ const ll MOD = 1e9 +7 ;
18+ const ll INF = 1e18 ;
19+
20+ void solve () {
21+ int n,k;
22+ cin>>n>>k;
23+ vi a (n);
24+ f (i,0 ,n) cin>>a[i];
25+ vi spf (1e5 +1 );
26+ f (i,1 ,1e5 +1 ) spf[i]=i;
27+ for (int i=2 ;i*i<=1e5 ;i++){
28+ if (spf[i]==i){
29+ for (int j=i*i;j<=1e5 ;j+=i){
30+ if (spf[j]==j){
31+ spf[j]=i;
32+ }
33+ }
34+ }
35+ }
36+ map<vpii,ll> cnt;
37+ ll ans=0 ;
38+ for (int x:a){
39+ map<int ,int > factors;
40+ while (x>1 ){
41+ int p=spf[x];
42+ int c=0 ;
43+ while (x%p==0 ){
44+ x/=p;
45+ c++;
46+ }
47+ c%=k;
48+ if (c>0 )
49+ factors[p]=c;
50+ }
51+ vpii key,need;
52+ for (auto &it:factors){
53+ key.pb (it);
54+ int y=(k-it.second )%k;
55+ if (y>0 ){
56+ need.pb ({it.first ,y});
57+ }
58+ }
59+ ans+=cnt[need];
60+ cnt[key]++;
61+ }
62+ cout<<ans<<endl;
63+ }
64+
65+ int main () {
66+ fast_io;
67+ int t = 1 ;
68+ // cin >> t;
69+ while (t--) solve ();
70+ return 0 ;
71+ }
You can’t perform that action at this time.
0 commit comments