You are given $n$ positive integers $a_1, \ldots, a_n$, and an integer $k \geq 2$. Count the number of pairs $i, j$ such that $1 \leq i < j \leq n$, and there exists an integer $x$ such that $a_i \cdot a_j = x^k$.
Input
The first line contains two integers $n$ and $k$ ($2 \leq n \leq 10^5$, $2 \leq k \leq 100$).
The second line contains $n$ integers $a_1, \ldots, a_n$ ($1 \leq a_i \leq 10^5$).
Output
Print a single integer — the number of suitable pairs.
Example input
6 3 1 3 9 8 24 1
output
5
Note
In the sample case, the suitable pairs are:
- $a_1 \cdot a_4 = 8 = 2^3$;
- $a_1 \cdot a_6 = 1 = 1^3$;
- $a_2 \cdot a_3 = 27 = 3^3$;
- $a_3 \cdot a_5 = 216 = 6^3$;
- $a_4 \cdot a_6 = 8 = 2^3$.
Solution:
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
const int MAX = 100010;
vector<int> p(MAX);
iota(p.begin(), p.end(), 0);
for (int i = 2; i < MAX; i++) {
    if (p[i] == i) {
      for (int j = i + i; j < MAX; j += i) {
        if (p[j] == j) {
          p[j] = i;
        }
      }
    }
  }
  int n, k;
  cin >> n >> k;
vector<int> cnt(MAX);
long long ans = 0;
for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
int res = 1;
long long ask = 1;
while (x > 1) {
int y = p[x];
int cc = 0;
while (x % y == 0) {
x /= y;
++cc;
}
cc %= k;
for (int j = 0; j < cc; j++) {
        res *= y;
      }
      for (int j = 0; j < (k - cc) % k; j++) {
        ask *= y;
        ask = min(ask, MAX - 1LL);
      }
    }
    ans += cnt[ask];
    ++cnt[res];
  }
  cout << ans << '\n';
  return 0;
}
Related posts:
Correcting Mistakes
Borya and Hanabi
Berland Elections
Attack on Red Kingdom
Chinese Remainder Theorem
The Inclusion-Exclusion Principle
Kind Anton
Dima and Staircase
Half-plane intersection - S&I Algorithm in O(Nlog N)
Orac and LCM
Linear Diophantine Equation
Guess Your Way Out!
Tricky Interactor
Cartoons
Yura and Developers
Scheduling jobs on two machines
Running with Obstacles
Yet Another Array Queries Problem
Cursor Distance
Dima and Figure
Raffles
Tape
Koala and Notebook
Big Data
Koala and Lights
Choosing Subtree is Fun
Ant colony
Optimal Subsequences (Hard Version)
Cow and Treats
Finding Power of Factorial Divisor
Wilbur and Trees
Minimum Euler Cycle
 
