在 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 次檢視

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告