在 C++ 中查找最接近 a^b(a 的 b 次幂)的 x 的倍数


假设我们有三个值 a、b 和 x。我们必须找到 x 的一个倍数,该倍数最接近 ab。假设这些数字为 x = 4、a = 3、b = 3,则输出将为 28,因为这最接近 33 = 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

更新于:2019 年 12 月 19 日

186 次查看

开启你的职业生涯

通过完成课程获得认证

立即开始
广告