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

C++에서 ^b에 가장 가까운 x의 배수 찾기

<시간/>

세 개의 정수, b, x가 있다고 가정합니다. 작업은 ab에 가장 가까운 x의 배수를 구하는 것입니다. 따라서 a =5, b =4 및 x =3이면 출력은 624가 됩니다. 54 =625이고 624는 625에 가장 가까운 3의 배수이기 때문입니다.

작업은 간단합니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다 -

  • 숫자 계산 :=a b
  • 그런 다음 f :=(num/x)의 바닥
  • 을 찾습니다.
  • 이제 왼쪽에서 가장 가까운 요소는 cl =x * f가 되고 오른쪽은 cr =x * (f + 1)가 됩니다.
  • 마지막으로 가장 가까운 숫자는 min(num – cl, cr – num)입니다.

예시

#include <iostream>
#include <cmath>
using namespace std;
long long getClosest(int a, int b, int x) {
   long long num = pow(a, b);
   int f = floor(num / x);
   long long cl = x * f;
   long long cr = x * (f + 1);
   if ((num - cl) < (cr - num))
      return cl;
   else
      return cr;
}
int main() {
   int a = 5, b = 4, x = 3;
   cout << "Find closest element: " << getClosest(a, b, x);
}

출력

Find closest element: 624