Related Articles
Find the multiple of x which is closest to a^b
• Difficulty Level : Easy
• Last Updated : 03 May, 2021

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

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

 ``

## Javascript

 ``
Output:
`348`

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up