यह देखते हुए कि कार्य N तत्वों की संख्या के साथ किसी दिए गए सरणी में निरंतर ऑटोमोर्फिक तत्वों की संख्या को अधिकतम करना है।
एक ऑटोमोर्फिक संख्या एक संख्या है जिसका वर्ग उसी अंक के साथ समाप्त होता है जिसमें संख्या स्वयं होती है। उदाहरण के लिए 5 एक ऑटोमॉर्फिक संख्या है, क्योंकि 5*5 =25 और 25 5 पर समाप्त होता है।
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट − arr[]={5,3,625,6,8,1}
आउटपुट -2
स्पष्टीकरण - उपरोक्त सरणी में मौजूद ऑटोमोर्फिक संख्याएं 5, 625, 6 और 1 हैं लेकिन अधिकतम निरंतर ऑटोमोर्फिक संख्याएं {625,6} हैं जो आउटपुट =2 बनाती हैं।
इनपुट − arr[]={33, 25, 1, 76, 4}
आउटपुट -3
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
main() फंक्शन में int टाइप का वेरिएबल 'n' बनाएं और उसमें दिए गए ऐरे के साइज को स्टोर करें।
-
फंक्शन में MaxAutomorphic इनिशियलाइज़ करेंटमैक्स =0 और मैक्सिमम =0 दोनों प्रकार के int क्रमशः वर्तमान अधिकतम मान और अधिकतम मान को स्टोर करने के लिए।
-
i=0 से i
-
IsAutomophic() फंक्शन में एक वैरिएबल sqr=n*n टाइप int को इनिशियलाइज़ करें जो नंबर n के स्क्वेर को स्टोर करने के लिए है
-
शर्त n>0 के साथ जबकि लूप का उपयोग करके लूप करें और यह जांचने के लिए n और sqr के अंतिम अंकों की तुलना करें कि संख्या ऑटोमॉर्फिक है या नहीं।
-
मैक्सऑटोमोर्फिक () फ़ंक्शन में वापस, यदि संख्या ऑटोमॉर्फिक नहीं है तो CurrentMax=0 सेट करें
-
अन्यथा, यदि संख्या ऑटोमॉर्फिक पाई जाती है तो CurrentMax में 1 जोड़ें और अधिक संख्या को CurrentMax और अधिकतम से अधिकतम चर में संग्रहीत करें।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
//Function to check if number is automorphic
bool IsAutomorphic(int n){
//Storing the square of n
int sqr = n * n;
//Comparing the digits
while (n > 0){
/*Return false if any digit of n doesn't
match with its square's last digits*/
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++){
//Checking if the element is non-automorphic
if (IsAutomorphic(arr[i]) == false)
CurrentMax = 0;
//Updating CurrentMax and Maximum if number is automorphic
else{
CurrentMax++;
Maximum = max(CurrentMax, Maximum);
}
}
return Maximum;
}
//Main function
int main(){
int arr[] = { 33, 25, 1, 76, 4 };
int size = sizeof(arr) / sizeof(arr[0]);
cout << MaxAutomorphic(arr, size);
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
3