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

นับทริปเล็ตพีทาโกรัส a²+b²=c² โดย 1≤a≤b≤c≤n ใน C++

ได้รับจำนวนเต็ม n ต้องการนับทริปเล็ต (a,b,c) ที่เป็นจำนวนเต็มบวก และ a² + b² = c² โดย 1 ≤ a ≤ b ≤ c ≤ n

ตัวอย่าง

อินพุต: N = 5

เอาต์พุต: 1 (3,4,5)

อินพุต: N = 3

เอาต์พุต: 0

แนวทาง

  • ลูป a = 1..n, b = a..n
  • คำนวณ sum = a² + b², c = sqrt(sum)
  • ถ้า c×c == sum และ b ≤ c ≤ n เพิ่มตัวนับ

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

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

int countTriplets(int n) {
    int count = 0;
    for (int a = 1; a <= n; a++) {
        for (int b = a; b <= n; b++) {
            int sum = a*a + b*b;
            int c = sqrt(sum);
            if (c * c == sum && b <= c && c <= n) {
                count++;
                cout << endl << "a:" << a << " b:" << b << " c:" << c;
            }
        }
    }
    return count;
}

int main() {
    int N = 15;
    cout << endl << "Number of triplets: " << countTriplets(N);
    return 0;
}

ผลลัพธ์

a:3 b:4 c:5
a:5 b:12 c:13
a:6 b:8 c:10
a:9 b:12 c:15
Number of triplets: 4