เรามีผลรวมและ 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