# Find the multiple of x which is closest to a^b

Given three integers a, b and x, the task is to get the multiple of x which is closest to ab.

Examples:

Input: a = 5, b = 4, x = 3
Output: 624
54 = 625 and 624 is the multiple of 3 which is closest to 625

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Calculate ab and store it in a variable say 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 ` `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; ` `} `

## Java

 `//Java implementation of the approach  ` ` `  `public` `class` `GFG { ` ` `  `// Function to return the multiple of x  ` `// which is closest to a^b  ` `    ``static` `long` `getClosest(``int` `a, ``int` `b, ``int` `x) { ` `        ``long` `num = (``long``) Math.pow(a, b); ` ` `  `        ``int` `floor = (``int``) (num / x); ` ` `  `        ``// Closest element on the left  ` `        ``long` `numOnLeft = x * floor; ` ` `  `        ``// Closest element on the right  ` `        ``long` `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; ` `        ``} ` `    ``} ` ` `  `    ``public` `static` `void` `main(String[] args) { ` `        ``int` `a = ``349``, b = ``1``, x = ``4``; ` `        ``System.out.println(getClosest(a, b, x)); ` ` `  `    ``} ` `} `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function to return the multiple of x  ` `# which is closest to a^b ` `def` `getClosest(a, b, x) : ` `    ``num ``=` `pow``(a, b) ` ` `  `    ``floor ``=` `num ``/``/` `x ` ` `  `    ``# Closest element on the left ` `    ``numOnLeft ``=` `x ``*` `floor ` ` `  `    ``# Closest element on the right ` `    ``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 ` `if` `__name__ ``=``=` `"__main__"` `: ` `     `  `    ``a, b, x ``=` `349``, ``1``, ``4` `    ``print``(getClosest(a, b, x)) ` ` `  `# This code is contributed by Ryuga `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `// #define ll long long int ` ` `  `class` `GFG ` `{ ` `// Function to return the multiple of x  ` `// which is closest to a^b ` `static` `long` `getClosest(``int` `a, ``int` `b, ``int` `x) ` `{ ` `    ``int` `num = (``int``)Math.Pow(a, b); ` ` `  `    ``int` `floor = (``int``)(num / x); ` ` `  `    ``// Closest element on the left ` `    ``int` `numOnLeft = (``int``)(x * floor); ` ` `  `    ``// Closest element on the right ` `    ``int` `numOnRight = (``int``)(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 ` `public` `static` `void` `Main() ` `{ ` `    ``int` `a = 349, b = 1, x = 4; ` `    ``Console.WriteLine(getClosest(a, b, x)); ` `} ` `} ` ` `  `// This code is contributed  ` `// by Akanksha Rai `

## PHP

 ` `

Output:

```348
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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.