在C ++中找到最接近a ^ b的x的倍数

假设我们有三个整数,a,b和x。任务是获得x的倍数,最接近ab。因此,如果a = 5,b = 4且x = 3,则输出将为624。由于54 = 625,并且624是3的倍数,最接近625。

任务很简单。我们必须按照以下步骤来解决这个问题-

  • 计算num:= a b

  • 然后找到f:=下限(num / x)

  • 现在,最左边的元素是cl = x * f,右边的元素是cr = x *(f + 1)

  • 最后,其中最接近的数字将是min(num-cl,cr-num)

示例

#include <iostream>
#include <cmath>
using namespace std;
long long getClosest(int a, int b, int x) {
   long long num = pow(a, b);
   int f = floor(num / x);
   long long cl = x * f;
   long long cr = x * (f + 1);
   if ((num - cl) < (cr - num))
      return cl;
   else
      return cr;
}
int main() {
   int a = 5, b = 4, x = 3;
   cout << "Find closest element: " << getClosest(a, b, x);
}

输出结果

Find closest element: 624