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

합과 GCD가 C++로 주어진 두 숫자 찾기

<시간/>

우리는 두 숫자와 b의 합과 gcd를 가지고 있습니다. 숫자와 b를 모두 찾아야 합니다. 이것이 불가능하면 -1을 반환합니다. 합이 6이고 gcd가 2라고 가정하면 숫자는 4와 2입니다.

접근 방식은 GCD가 주어졌을 때 숫자가 그것의 배수가 될 것이라는 것을 알고 있는 것과 같습니다. 이제 다음 단계가 있습니다.

  • 첫 번째 숫자를 GCD로 선택하면 두 번째 숫자는 합계 - GCD

    가 됩니다.
  • 이전 단계에서 선택한 숫자의 합이 합과 같으면 두 숫자를 모두 출력합니다.

  • 그렇지 않으면 숫자가 존재하지 않으므로 -1을 출력합니다.

#include <iostream>
#include <algorithm>
using namespace std;
void printTwoNumbers(int s, int g) {
   if (__gcd(g, s - g) == g && s != g)
      cout << "first number = " << min(g, s - g) << "\nsecond number = " << s - min(g, s - g) << endl;
   else
      cout << -1 << endl;
}
int main() {
   int sum = 6;
   int gcd = 2;
   printTwoNumbers(sum, gcd);
}

출력

first number = 2
second number = 4