เรามีผลรวมและ gcd ของตัวเลขสองตัว a และ b เราต้องหาทั้งตัวเลข a และ 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