ได้รับจำนวนเต็ม 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