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

หา x, y, z ที่ทำให้ 2/n = 1/x + 1/y + 1/z ใน C++

ในปัญหานี้ เราได้รับค่าจำนวนเต็ม n งานของเราคือการหา x, y, z ที่ทำให้สมการ 2/n = 1/x + 1/y + 1/z เป็นจริง

ตัวอย่างเพื่อเข้าใจปัญหา

Input: n = 4 Output: 4, 5, 20

วิธีการแก้ปัญหา

วิธีแก้ที่ง่ายคือใช้สูตรจากค่า n:

  • ถ้า n = 1 ไม่มีคำตอบ
  • ถ้า n > 1 คำตอบคือ x = n, y = n+1, z = n(n+1)

สมการจะกลายเป็น: 2/n = 1/n + 1/(n+1) + 1/(n*(n+1))

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

void findSolution(int a, int b, int n) {
    for (int i = 0; i * a <= n; i++) {
        if ((n - (i * a)) % b == 0) {
            cout << i << " and " << (n - (i * a)) / b;
            return;
        }
    }
    cout << "No solution";
}

int main() {
    int a = 2, b = 3, n = 7;
    cout << "The value of x and y for the equation 'ax + by = n' is ";
    findSolution(a, b, n);
    return 0;
}

ผลลัพธ์

The value of x and y for the equation 'ax + by = n' is 2 and 1