My code failed in the 6th hidden test cases of POWPM problem. Please Help

Please help, I am not able to find the issues in my code

Here is problem link - Powered Parameters Practice Coding Problem - CodeChef

Here is my code.

#include<iostream>
#include<vector>
#include<bits/stdc++.h>
#define ll long long
#define lli long long int
#define yesno(x) cout << ((x) ? "yes" : "no")
#define sort(arr) sort(arr.begin(),arr.end())
#define reverse(arr) reverse(arr.begin(),arr.end())
#define inputArr(n) for(int i = 0; i < n; i++) cin >> arr[i]
#define vi vector<int>
using namespace std;

int binSearch(vector<int>& root, int el) {
    int i = 0, j = root.size()-1;
    
    int n = root.size();
    int ans = n;
    while(i <= j) {
        int mid = (i+j)/2;
        
        if(el <= root[mid]) {
            ans = mid;
            j = mid-1;
        }
        else i = mid + 1;
    }
    
    return n-ans;
}

void solve() {
    int n;
    cin >> n; 
    vi arr(n);
    inputArr(n);
    
    vector<int> root(n);
    for(int i = 0; i < n; i++) {
        int power = pow(arr[i], 1.0/(i+1));
        root[i] = power;
    }
    
    
    
    sort(root);
    
    lli cnt = 0;
    for(auto i: arr) {
        cnt += binSearch(root, i);
    }
    
    cout << cnt;
    
}

int main(){
    int t;
    cin >> t;
    while(t--) {
        solve();
        cout << endl;
    }

    return 0;
}

@kristan
bro calculating pow of each number will overflow its integer and long long integer range .
so your logic is not right .
plzz refer my c++ code for better understanding of the logic

#include <bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    long long int n;
	    cin>>n;
	    long long int a[n],ans=0;
	    for(int i=0;i<n;i++)
	    {
	        cin>>a[i];
	    }
	    for(int i=0;i<n;i++)
	    {
	        if(a[i]==1)
	        ans+=n;
	        else
	        {
	            long long int val=1;
	            for(int j=0;j<min(32LL,n);j++)
	            {
	                val*=a[i];
	                if(val>1e9)
	                break;
	                if(val<=a[j])
	                ans++;
	            }
	        }
	    }
	    cout<<ans<<endl;
	}
	return 0;
}

Bro, thanks for reply. But I am calculating jth root of Aj. Since ifAi^j <= Aj this also means
Ai <= Aj^(1/j) i.e. jth root of Aj. See

vector<int> root(n);
    for(int i = 0; i < n; i++) {
        int power = pow(arr[i], 1.0/(i+1));
        root[i] = power;
    }

@kristan
ohh sorry , missed that part .
Then may be its failing for some precision level.