Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm bội số của x gần nhất với hoặc a ^ b (a được nâng lên thành lũy thừa b) trong C ++

Giả sử chúng ta có ba giá trị a, b và x. Chúng ta phải tìm một bội số của x, gần nhất với a b . Giả sử các số là x =4, a =3, b =3, thì kết quả đầu ra sẽ là 28, vì giá trị này gần nhất với 3 3 =27

Cách tiếp cận rất đơn giản; chúng ta phải tuân theo các điều kiện này -

  • Nếu b <0 và a =1, thì ab trở thành 1 và do đó, bội số gần nhất của x trở thành 0 hoặc x.

  • Nếu b <0 và a> 1 thì ab sẽ nhỏ hơn 1 và do đó bội số gần nhất của x trở thành 0.

  • Nếu b> 0 thì tìm ab. Sau đó, đặt mul =số nguyên của ab / x, khi đó bội số gần nhất của x là mul * x hoặc (mul + 1) * x

Ví dụ

#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);
}

Đầu ra

Nearest multiple: 28