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

C++에서 한 숫자를 나누고 다른 숫자로 나눌 수 있는 최소값

<시간/>

문제 설명

두 개의 정수 p와 q가 주어지면 q % x =0 및 x % p =0이 되도록 가능한 최소 숫자 x를 찾는 작업입니다. 조건이 어떤 숫자에 대해서도 참이 아닌 경우 -1을 인쇄합니다.

예시

If p = 3 and q = 66 then answer is 3 as:
66 % 3 = 0
3 % 3 = 0

알고리즘

  • 만약 x가 주어진 조건을 만족한다면, x는 p의 배수이고 q는 x의 배수이기 때문에 q는 p로 나누어질 것이 분명합니다. 즉, q % p =0입니다.
  • 따라서 x의 가능한 최소값은 p와 q의 GCD가 될 것이며 q가 p로 나누어지지 않을 때 주어진 조건을 만족하는 숫자는 없을 것입니다

예시

#include <bits/stdc++.h>
using namespace std;
int getMinValue(int p, int q) {
   if (q % p == 0) {
      return __gcd(p, q);
   }
   return -1;
}
int main() {
   int p = 3;
   int q = 66;
   cout << "Minimum value = " << getMinValue(p, q) << endl;
   return 0;
}

위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다 -

출력

Minimum value = 3