 # Please provide hint for this problem ( see description )

May be you can try in this approach
simplify the equation
(Aj)^2 + AiAj - Ai = 0
Aj = (-Ai + sqrt(Ai^2 + 4
Ai))/2;
check for every element in Array, if the sqrt possible and any integer element found in the array
there will be a pair

1 Like

Thanks a lot for the help Can you please check this solution its giving TLE .

Through the given equation we can get that Ai= ( Aj*Aj )/( 1-Aj )

``````#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;

int main()
{

int t ; cin>>t ;
for(int i=0;i<t;i++)
{  unordered_map<double,vector<ll>>map;
int n ; cin>>n; ll arr[n];
for(int j=0;j<n;j++)
{ cin>>arr[j]; map[arr[j]].push_back(j);}
ll ans=0;

for(int g=0;g<n;g++)
{
if(arr[g]!=1)
{
double d=(arr[g]*arr[g])/(1-arr[g]);

if(map.find(d)!=map.end())
{
for(int r=0;r<map[d].size();r++)
{
if(map[d][r]<g)
{
ans++;
}
else
{
break;
}
}
}

}
}
cout<<ans<<endl;

}

return 0;
}
```**strong text**``````

dont insert the index in the map , just count the frequency of the element inside the map
just tranverse the map
all data types must be integers,dont use double,just try to check
(arr[g]arr[g])/1-arr[g] must be a integer
if it is not a integer
move on
if it is a integer
get the frequencies from the map
mp[a] = x;mp[b] = y;
number of pairs = x*y;
try in this approach

1 Like

Hello @ajithhtija , can you please provide the solution to this problem am unable to code the correct solution.

Also try this test case

input
1
4
-3 -3 -3 2

output
3
Explanation :- I am writing the index of the pair
(0,3) (1,3) (2,3)

Ai+Aj = -3+2 =-1 and Ai/Aj = -3/2 = -1

so, Ai+Aj = Ai/Aj also i<j

Thanks for the help 