Please provide hint for this problem ( see description )

https://mycode.prepbytes.com/problems/arrays/VALIDP

May be you can try in this approach
simplify the equation
(Aj)^2 + AiAj - Ai = 0
quadratic eqn formula
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 :smile:

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()
{
  //write your code here    
  
  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 :smile: , can you please provide the solution to this problem am unable to code the correct solution.

problem link:- PrepBytes

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

Please help me to solve this question also try the above testcase.

I think this link will help you rather than me check it
the above link is an accepted solution there he considers A[i]/A[j] must be a integer value
1
4
-3 -3 -3 2
for this test case the crct ouput:0

1 Like

Thanks for the help :smile: