Problem Description
You possess a vector A of size N, where Ai denotes the weight of the i-th bead among n beads on a table. Engaging in a competition against a machine, you have the liberty to select any two beads, keeping one for yourself (Ai) and surrendering the other to the machine (Aj). If you choose to retain Ai, you can partition its weight into k beads of equal weight (resulting in a new weight of Ai/k for the i-th bead). However, you must keep one of these new beads and discard the remaining k-1 beads. Subsequently, the machine will amplify the weight of the j-th bead (initially Aj) to k times its original weight (kAj). The objective is to achieve equal weights for all beads through a series of operations. Return 1 if successful or 0 if unsuccessful in this challenge.
Problem Constraints
2 <= |A| <= 105
1 <= Ai <= 106
Input Format
The first and only argument is array of integers A.
Output Format
Return 1 if you successfully achieve equal weights for all N beads; otherwise, return 0.
Example Input
Input 1:
A = [2, 3, 1]
Input 2:
A = [100, 2, 50, 10, 1]
Example Output
Example Explanation*
For Input 1:
We can never make all beads of equal size.
For Input 2:
Let's examine the vector A, which is [100, 2, 50, 10, 1], containing 5 elements. Two operations are performed on it:
Select a3 (which is 50) and a2 (which is 2), with k as 5. Replace a3 with a3 / k, resulting in 10, and replace a2 with a2 * k, resulting in 10. The modified array is now [100, 10, 10, 10, 1].
Choose a1 (which is 100) and a5 (which is 1), with k as 10. Replace a1 with a1 / k, resulting in 10, and replace a5 with a5 * k, resulting in 10. The final array is [10, 10, 10, 10, 10].
NOTE: You only need to implement the given function. Do not read input, instead use the arguments to the function. Do not print the output, instead return values as specified.
Still have a question? Checkout Sample Codes for more details.