আমাদের একটি পূর্ণসংখ্যা n দেওয়া হয়েছে। লক্ষ্য হল ট্রিপলেট (৩টি সংখ্যার সেট) খুঁজে বের করা যা শর্ত পূরণ করে −
-
a 2 +b 2 =c 2
-
1<=a<=b<=c<=n
আমরা 1<=a<=n এবং 1<=b<=n মানের জন্য দুটি লুপ চালানোর মাধ্যমে এটি করব। সেই অনুযায়ী c গণনা করুন (c=sqrt(a2+b2 )) এবং বৃদ্ধির সংখ্যা যদি 1 এবং 2 উভয় শর্তই পূরণ হয়।
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − N=5
আউটপুট − ট্রিপলেটের সংখ্যা − 1
ব্যাখ্যা −
for a=3, b=4 and c=5 both conditions are met.
ইনপুট − N=3
আউটপুট − ট্রিপলেটের সংখ্যা − 0
ব্যাখ্যা −
শর্ত 1 এবং 2 পূরণ করে এমন কোন ট্রিপলেট নেই।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
পূর্ণসংখ্যা N পরিসরের শেষ সীমা [1,N] সংরক্ষণ করে।
-
ফাংশন countTriplets(int n) n নেয় এবং ট্রিপলেটের সংখ্যা ফেরত দেয় যা a 2 শর্ত পূরণ করে +b 2 =c 2 এবং 1<=a<=b<=c<=n
-
পরিবর্তনশীল গণনা এই জাতীয় ট্রিপলেটের সংখ্যা সংরক্ষণ করে, প্রাথমিকভাবে 0।
-
পরিবর্তনশীল যোগফল a এবং b এর বর্গের সমষ্টি সংরক্ষণ করে।
-
a=1 থেকে n এবং b=a থেকে n, যোগফলের বর্গমূল হিসাবে যোগফল=a*a+b*b এবং c গণনা করুন (sqrt(sum))।
-
গণনা করা হলে c-এর মান থাকে যেমন c*c==সমষ্টি এবং b<=c &&c<=n ( উভয় শর্ত 1 এবং 2 পূরণ হয়)।
-
বর্তমান a,b,c হিসাবে বৃদ্ধির সংখ্যা উভয় শর্ত পূরণ করে।
-
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