Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm 2 số có tổng và tích đều bằng N trong C++

Cho N, tìm a, b thỏa mãn: a + b = N và a * b = N.

Giải phương trình

Từ a + b = N → b = N - a. Thay vào tích: a(N-a) = N → a² - Na + N = 0.

Định thức: Δ = N² - 4N. Cần Δ ≥ 0 → N ≤ 0 hoặc N ≥ 4.

Nghiệm: a,b = (N ± √(N²-4N)) / 2.

Code C++

#include <bits/stdc++.h>
using namespace std;

void findAB(double N) {
    double delta = N*N - 4*N;
    if (delta < 0) { cout << "NO\n"; return; }
    double a = (N + sqrt(delta)) / 2;
    double b = (N - sqrt(delta)) / 2;
    cout << "A = " << a << ", B = " << b << endl;
}

int main() {
    findAB(57.0); // A = 55.9818, B = 1.01819
    findAB(4.0);  // A = 2, B = 2
    findAB(3.0);  // NO
    return 0;
}

Kết quả

A = 55.9818, B = 1.01819
A = 2, B = 2
NO

Lưu ý: N phải ≥ 4 hoặc ≤ 0 để có nghiệm thực. Với số nguyên, chỉ N=4 cho nghiệm nguyên (2,2).