fizzbuzzer.com

Looking for good programming challenges?

Use the search below to find our solutions for selected questions!

Count Triplets Challenge

Sharing is caring!

You are given an array and you need to find number of tripets of indices $(i, j, k)$ such that the elements at those indices are in geometric progression for a given common ratio $r$ and $i < j < k$.

For example, $arr=\left[1,4,16,64\right]$. If $r=4$, we have $\left[1,4,16\right]$ and $\left[4,16,64\right]$ at indices $(0, 1, 2)$ and $(1, 2, 3)$.

Function Description
Complete the countTriplets function in the editor below. It should return the number of triplets forming a geometric progression for a given $r$ as an integer. countTriplets has the following parameter(s):
* arr: an array of integers
* r: an integer, the common ratio

Input Format
The first line contains two space-separated integers $n$ and $r$, the size of $arr$ and the common ratio.

The next line contains $n$ space-seperated integers $arr\left[i\right]$.

Constraints
* $1 \le n \le 10^5$
* $1 \le r \le 10^9$
* $1 \le arr\left[i\right] \le 10^9$

Output Format
Return the count of triplets that form a geometric progression.

Sample Input 0

Sample Output 0

Explanation 0
There are $2$ triplets in satisfying our criteria, whose indices are $(0,1,3)$ and $(0,2,3)$

Sample Input 1

Sample Output 1

Explanation 1
The triplets satisfying are index $(0,1,2)$, $(0,1,3)$, $(1,2,4)$, $(1,3,4)$, $(1,4,5)$ and $(3,4,5)$.

Solution