在C ++中找到最接近x或a ^ b(a升为幂b)的x的倍数

假设我们有三个值,a,b和x。我们必须找到x的一个倍数,最接近b。假设数字为x = 4,a = 3,b = 3,则输出为28,因为它最接近3 3 = 27

方法很简单;我们必须遵循这些条件-

  • 如果b <0,且a = 1,则ab变为1,因此,x的最接近倍数变为0或x。

  • 如果b <0且a> 1,则ab小于1,因此x的最接近倍数变为0。

  • 如果b> 0,则找到ab。然后令mul = ab / x的整数,则x的最接近倍数是mul * x或(mul + 1)* x

示例

#include<iostream>
#include<cmath>
using namespace std;
void findMultiple(int a, int b, int x) {
   cout << "Nearest multiple: ";
   if (b < 0) {
      if (a == 1 && x == 1)
         cout << "1";
      else
         cout << "0";
   }
   int mul = pow(a, b);
   int ans = mul / x;
   int ans1 = x * ans;
   int ans2 = x * (ans + 1);
   if((mul - ans1) <= (ans2 - mul)){
      cout << ans1;
   }
   else{
      cout << ans2;
   }
}
int main() {
   int a = 3, b = 3, x = 4;
   findMultiple(a, b, x);
}

输出结果

Nearest multiple: 28