দেওয়া কাজ হল N উপাদান বিশিষ্ট একটি অ্যারেতে সর্বোচ্চ কতগুলো সান্মুখ্য অটোমরফিক উপাদান থাকতে পারে তা বের করা।
একটি অটোমরফিক সংখ্যা হল এমন সংখ্যা যার বর্গের শেষ ডিজিটগুলো সেই সংখ্যাটির সাথে মিলে যায়। উদাহরণস্বরূপ ৫ একটি অটোমরফিক সংখ্যা কারণ ৫*৫ = ২৫ এবং ২৫-এর শেষে ৫ আছে।
উদাহরণ দিয়ে বোঝা যাক
ইনপুট - arr[]={5,3,625,6,8,1}
আউটপুট - ২
ব্যাখ্যা - উপরের অ্যারেতে অটোমরফিক সংখ্যাগুলো হল ৫, ৬২৫, ৬ এবং ১ কিন্তু সর্বোচ্চ সান্মুখ্য অটোমরফিক সংখ্যাগুলো হল {625,6} যা আউটপুট ২ করে দেয়।
ইনপুট - arr[]={33, 25, 1, 76, 4}
আউটপুট - ৩
প্রোগ্রামে ব্যবহৃত পদ্ধতি
main() ফাংশনে 'n' নামক একটি ইন্টিজার ভেরিয়েবল তৈরি করুন এবং তাতে দেওয়া অ্যারের আকার সংরক্ষণ করুন।
MaxAutomorphic ফাংশনে CurrentMax=0 এবং Maximum=0 ইন্টিজার ভেরিয়েবল আরম্ভ করুন যথাক্রমে বর্তমান সর্বোচ্চ মান এবং এখনো সর্বোচ্চ মান সংরক্ষণের জন্য।
i=0 থেকে i<n পর্যন্ত লুপ চালান এবং IsAutomorphic() ফাংশন কল করে দিয়ে চেক করুন দেওয়া সংখ্যা অটোমরফিক কিনা।
IsAutomorphic() ফাংশনে sqr = n*n ইন্টিজার ভেরিয়েবল আরম্ভ করুন n-এর বর্গ সংরক্ষণের জন্য।
while লুপ চালান n>0 কন্ডিশন সহ এবং n এবং sqr-এর শেষ ডিজিটগুলো তুলনা করুন অটোমরফিক কিনা চেক করার জন্য।
MaxAutomorphic() ফাংশনে ফিরে, যদি সংখ্যা অটোমরফিক না হয় তবে CurrentMax=0 সেট করুন।
অন্যথায়, যদি সংখ্যা অটোমরফিক হয় তবে CurrentMax-এ ১ যোগ করুন এবং CurrentMax ও Maximum-র মধ্যে বড়টিকে Maximum-এ সংরক্ষণ করুন।
C++ প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
// সংখ্যা অটোমরফিক কিনা চেক করার ফাংশন
bool IsAutomorphic(int n){
// n-এর বর্গ সংরক্ষণ
int sqr = n * n;
// ডিজিট তুলনা
while (n > 0){
/*যদি n-এর যেকোনো ডিজিট তার বর্গের শেষ ডিজিটের সাথে মেলে না
তবে false ফেরত দিন*/
if (n % 10 != sqr % 10)
return false;
n /= 10;
sqr /= 10;
}
return true;
}
int MaxAutomorphic(int arr[], int size){
int CurrentMax = 0, Maximum = 0;
for (int i = 0; i < size; i++){
// উপাদানটি নন-অটোমরফিক কিনা চেক করা
if (IsAutomorphic(arr[i]) == false)
CurrentMax = 0;
// সংখ্যা অটোমরফিক হলে CurrentMax এবং Maximum আপডেট
else{
CurrentMax++;
Maximum = max(CurrentMax, Maximum);
}
}
return Maximum;
}
// মেইন ফাংশন
int main(){
int arr[] = { 33, 25, 1, 76, 4 };
int size = sizeof(arr) / sizeof(arr[0]);
cout << MaxAutomorphic(arr, size);
return 0;
}
আউটপুট
3