Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาสองจำนวนที่ผลรวมและผลคูณเท่ากับ N เดียวกันใน C++


บทนำ

ในบทช่วยสอนนี้ เราจะหา สองจำนวน 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 ก่อน หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ