Skip to content

Commit 28f14ad

Browse files
committed
Solved Question 2
1 parent 98005d0 commit 28f14ad

1 file changed

Lines changed: 71 additions & 0 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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+
}

0 commit comments

Comments
 (0)