우리는 두 숫자와 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