हमें एक पूर्णांक n दिया गया है। लक्ष्य त्रिक (3 संख्याओं का सेट) को खोजना है जो शर्तों को पूरा करते हैं -
-
ए 2 +बी 2 =c 2
-
1<=a<=b<=c<=n
हम 1<=a<=n और 1<=b<=n के मानों के लिए दो लूप चलाकर ऐसा करेंगे। तदनुसार c की गणना करें (c=sqrt(a2+b2 )) और अगर 1 और 2 दोनों शर्तें पूरी होती हैं तो वेतन वृद्धि की गणना करें।
आइए उदाहरणों से समझते हैं।
इनपुट -एन=5
आउटपुट - त्रिकों की संख्या - 1
स्पष्टीकरण -
for a=3, b=4 and c=5 both conditions are met.
इनपुट -एन=3
आउटपुट − त्रिगुणों की संख्या − 0
स्पष्टीकरण -
ऐसा कोई ट्रिपलेट नहीं जो शर्तों 1 और 2 को पूरा करता हो।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक एन श्रेणी की अंतिम सीमा [1,N] संग्रहीत करता है।
-
फंक्शन काउंटट्रिपलेट्स(इंट एन) एन लेता है और ए की शर्तों को पूरा करने वाले ट्रिपलेट्स की गिनती देता है 2 +बी 2 =c 2 और 1<=a<=b<=c<=n
-
वैरिएबल काउंट ऐसे ट्रिपलेट्स की संख्या को स्टोर करता है, शुरुआत में 0.
-
परिवर्तनीय योग a और b के वर्गों के योग को संग्रहीत करता है।
-
a=1 से n तक और b=a से n तक, sum=a*a+b*b और c को योग के वर्गमूल (sqrt(sum)) के रूप में परिकलित करें।
-
यदि परिकलित c का मान ऐसा है कि c*c==sum और b<=c &&c<=n (शर्त 1 और 2 दोनों मिले हैं)।
-
वर्तमान ए, बी, सी के रूप में वृद्धि की गणना दोनों शर्तों को पूरा करती है।
-
इसे a=n और b=n तक करें। अंत में, गिनती में ऐसे कई ट्रिपल होंगे जो शर्तों को पूरा करते हैं।
-
वांछित परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#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; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
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