কম্পিউটার টিউটোরিয়াল

C++-এ অটোমরফিক সংখ্যার সর্বোচ্চ সান্মুখ্য শৃঙ্খলা


দেওয়া কাজ হল 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
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. সি++-এ ডাডেনি নম্বর

  4. ডেসিমেল নম্বরকে অক্টাল (Octal) এ কনভার্ট করার C++ প্রোগ্রাম