Problem description
You are given 3 numbers a, b and x. You need to output the multiple of x which is closest to pow(a,b). If more than one answer exists , display the smallest one.
Input Format
The first line contains T, the number of testcases.
T lines follow, each line contains 3 space separated integers (a, b and x
respectively)
Constraints
1 ≤ T ≤ pow(10,5) 1 ≤ x ≤ pow(10,9) 0 < pow(a,b) ≤ pow(10,9) 1 ≤ a ≤ pow(10,9) pow(-10,9) ≤ b ≤ pow(10,9)
Output Format
For each test case,output the multiple of x which is closest to power(a,b)
Explanation
if the pow(a,b) modules x is greater than half of x the closest number would be x - pow(a,b) modules x greater than that of the pow(a,b).
If pow(a,b) modules x is not greater than half of x then the closest number would be pow(a,b) modules x less than pow(a,b).
Link to the problem on hackerrank
Solution in java
import java.util.*;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num_of_test_cases = sc.nextInt();
while (num_of_test_cases > 0) {
long a = sc.nextInt();
long b = sc.nextInt();
long x = sc.nextInt();
long apowb = (long) Math.pow(a, b);
if (apowb % x > x / 2)
System.out.println(apowb + x - apowb % x);
else
System.out.println(apowb - apowb % x);
num_of_test_cases--;
}
sc.close();
}
}