- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count number of triplets (a, b, c) such that a^2 + b^2 = c^2 and 1<=a<=b<=c<= n in C++
We are given an integer n. The goal is to find triplets ( set of 3 numbers ) that satisfy the conditions −
a2+b2=c2
1<=a<=b<=c<=n
We will do this by running two loops for values of 1<=a<=n and 1<=b<=n. Calculate c accordingly (c=sqrt(a2+b2 )) and increment count if both conditions 1 and 2 are met.
Let’s understand with examples.
Input − N=5
Output − Number of triplets − 1
Explanation −
for a=3, b=4 and c=5 both conditions are met.
Input − N=3
Output − Number of triplets − 0
Explanation −
No such triplets that meet conditions 1 and 2.
Approach used in the below program is as follows
Integer N stores the last limit of the range [1,N].
Function countTriplets(int n) takes n and returns the count of triplets which satisfy the conditions a2+b2=c2 and 1<=a<=b<=c<=n
Variable count stores the number of such triplets, initially 0.
Variable sum stores the sum of squares of a and b.
Starting from a=1 to n and b=a to n, calculate sum=a*a+b*b and c as square root of sum (sqrt(sum)).
If calculated c has value such that c*c==sum and b<=c && c<=n ( both condition 1 and 2 are met ).
Increment count as current a,b,c satisfy both conditions.
Perform this until a=n and b=n. In the end, count will have a number of such triplets that satisfy the conditions.
Return the count as desired result.
Example
#include <bits/stdc++.h> using namespace std; int countTriplets(int n){ int count = 0; int a,b,c; a=b=c=1; int sum=0; for (a = 1; a <= n; a++) //1<=a<=n{ for (b = a; b <= n; b++) //1<=a<=b<=n{ sum = a*a + b*b; //a^2 + b^2 =c^2 c = sqrt(sum); if (c * c == sum && b<=c && c<=n) //check 1<=a<=b<=c<=n{ count++; cout<<endl<<"a :"<<a<<" b :"<<b<<" c :"<<c; //to print triplets } } } return count; } int main(){ int N = 15; cout <<endl<< "Number of triplets : "<<countTriplets(N); return 0; }
Output
If we run the above code it will generate the following output −
Number of triplets : a :3 b :4 c :5 a :5 b :12 c :13 a :6 b :8 c :10 a :9 b :12 c :154 Number of triplets : 4