บทนำ
ในบทช่วยสอนนี้ เราจะหา สองจำนวน x และ y ที่ทำให้:
- x + y = n
- x * y = n
หากไม่มีคำตอบ ให้พิมพ์ "None"
หลักการคณิตศาสตร์
x และ y เป็นรากของสมการกำลังสอง: t² - nt + n = 0
สูตรราก: x, y = (n ± √(n² - 4n)) / 2
เงื่อนไขที่มีคำตอบจริง: n² - 4n ≥ 0 → n ≥ 4 หรือ n ≤ 0
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
void findTwoNumbersWithSameSumAndProduct(double n) {
double discriminant = n * n - 4.0 * n;
// ตรวจสอบรากจินตภาพ
if (discriminant < 0) {
cout << "None";
return;
}
// พิมพ์รากทั้งสอง
cout << (n + sqrt(discriminant)) / 2.0 << endl;
cout << (n - sqrt(discriminant)) / 2.0 << endl;
}
int main() {
double n = 50;
findTwoNumbersWithSameSumAndProduct(n);
return 0;
}
ผลลัพธ์
48.9792 1.02084
ตรวจสอบ: 48.9792 + 1.02084 ≈ 50, 48.9792 × 1.02084 ≈ 50 ✓
กรณีพิเศษ
- n = 4 → x = y = 2 (รากซ้ำ)
- n = 0 → x = 0, y = 0
- 0 < n < 4 → ไม่มีคำตอบจริง (พิมพ์ None)
สรุป
โจทย์นี้ลดรูปเป็นการหาค่ารากของสมการกำลังสอง ต้องตรวจสอบ discriminant ก่อน หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ