Given three integers **a**, **b** and **x**, the task is to get the multiple of **x** which is closest to **a ^{b}**.

**Examples:**

Input:a = 5, b = 4, x = 3

Output:624

5^{4}= 625 and 624 is the multiple of 3 which is closest to 625

Input:a = 349, b = 1, x = 4

Output:348

**Approach:**

- Calculate
**a**and store it in a variable say^{b}**num**. - Then, calculate
**⌊num / x⌋**and store it in a variable**floor**. - Now the closest element at the left will be
**closestLeft = x * floor**. - And the closest element on the right will be
**closestRight = x * (floor + 1)**. - Finally, the closest number among them will be
**min(num – closestLeft, closestRight – num)**.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` `#define ll long long int ` ` ` `// Function to return the multiple of x ` `// which is closest to a^b ` `ll getClosest(` `int` `a, ` `int` `b, ` `int` `x) ` `{ ` ` ` `ll num = ` `pow` `(a, b); ` ` ` ` ` `int` `floor` `= num / x; ` ` ` ` ` `// Closest element on the left ` ` ` `ll numOnLeft = x * ` `floor` `; ` ` ` ` ` `// Closest element on the right ` ` ` `ll numOnRight = x * (` `floor` `+ 1); ` ` ` ` ` `// If numOnLeft is closer than numOnRight ` ` ` `if` `((num - numOnLeft) < (numOnRight - num)) ` ` ` `return` `numOnLeft; ` ` ` ` ` `// If numOnRight is the closest ` ` ` `else` ` ` `return` `numOnRight; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `a = 349, b = 1, x = 4; ` ` ` `cout << getClosest(a, b, x) << endl; ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## PHP

**Output:**

348

## Recommended Posts:

- Find multiple of x closest to or a ^ b (a raised to power b)
- Multiple of x closest to n
- Find the number closest to n and divisible by m
- Find number from given list for which value of the function is closest to A
- Find the closest and smaller tidy number
- Find the largest multiple of 2, 3 and 5
- Find the largest multiple of 3 | Set 1 (Using Queue)
- Find First element in AP which is multiple of given prime
- Find the largest multiple of 3 from array of digits | Set 2 (In O(n) time and O(1) space)
- Multiple Inheritance in C++
- Efficiently check whether n is a multiple of 4 or not
- Java and Multiple Inheritance
- Round to next greater multiple of 8
- Round to next smaller multiple of 8
- Returning Multiple values in Java

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.