Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 a ^ b(a에서 b의 거듭제곱)에 가장 가까운 x의 배수 찾기

<시간/>

세 개의 값, b, x가 있다고 가정합니다. b 에 가장 가까운 x의 배수를 찾아야 합니다. . 숫자가 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