हमें आकार N के धनात्मक पूर्णांकों की एक सरणी Arr[] दी गई है। लक्ष्य सरणी के सभी तत्वों के गुणनफल में मौजूद अनुगामी शून्यों की संख्या की गणना करना है।
हम प्रत्येक संख्या के गुणनखंडों को गिनकर ऐसा करेंगे। हम 2 और 5 को प्रत्येक संख्या के गुणनखंड के रूप में गिनेंगे क्योंकि 2 और 5 का गुणनफल 10 है जो 1 अनुगामी 0 देता है। अंत में जो भी गिनती छोटी होती है वह गुणनफल में अनुगामी शून्य की गिनती देती है। अगर हमारे पास 4 2 और 6 5 हैं तो उत्पाद में 4 अनुगामी शून्य होंगे - 2*2*2*2*5*5*5*5*5*5=250000
आइए उदाहरणों से समझते हैं।
इनपुट
Arr[] = { 2, 5, 10, 15, 20, 25, 100 }
आउटपुट
Number of trailing zeroes : 6
स्पष्टीकरण
Factors 2 and 5 of each element of Arr[]: Arr[0] = 2 : 2 twos=1, fives=0 Arr[1] = 5 : 5 twos=1, fives=1 Arr[2] = 10 : 2*5 twos=2, fives=2 Arr[3] = 15 : 3*5 twos=2, fives=3 Arr[4] = 20 : 2*2*5 twos=4, fives=4 Arr[5] = 25 : 5*5 twos=4, fives=6 Arr[6] = 100 : 2*2*5*5 twos=6, fives=8 Count of 2 is less so trailing zeroes will be 6.
इनपुट
Arr[] = { 10,10,10,10,10 }
आउटपुट
Number of trailing zeroes : 5
स्पष्टीकरण
Factors 2 and 5 of each element of Arr[]: Arr[0] = 10 : 2*5 twos=1, fives=1 Arr[1] = 10 : 2*5 twos=2, fives=2 Arr[2] = 10 : 2*5 twos=3, fives=3 Arr[3] = 10 : 3*5 twos=4, fives=4 Arr[4] = 10 : 2*5 twos=5, fives=5 Count of 2 and 5 is equal so trailing zeroes will be 5.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम लंबाई N के धनात्मक पूर्णांकों की एक सरणी लेते हैं..
-
फ़ंक्शन TrailZeros(int arr[],int n) इनपुट के रूप में सरणी और n लेता है और सभी तत्वों के उत्पाद में अनुगामी शून्य की संख्या देता है।
-
संख्या शून्य के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
दो चर दो और पांच को 2 और 5 को गुणनखंड के रूप में लें।
-
लूप के लिए उपयोग कर ट्रैवर्स सरणी।
-
प्रत्येक तत्व के लिए यदि यह 2 या 5 से विभाज्य है तो दो और पाँच बढ़ाएँ और इसे 2 या 5 से कम करें।
-
लूप के अंत में दो और पांच का मूल्य चेक करें, जो भी छोटा हो।
-
दो में से कम से गिनती शुरू करें।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h< using namespace std; int trailZeros(int arr[],int n){ int count = 0; int twos = 0; int fives = 0; for (int i = 0; i < n; i++){ while(arr[i]%2==0 || arr[i]%5==0){ if(arr[i]%2==0){ arr[i]=arr[i]/2; twos++; } if(arr[i]%5==0){ arr[i]=arr[i]/5; fives++; } } } count=twos<fives?twos:fives; return count; } int main(){ int Arr[]={ 12, 5 , 15, 8, 100, 40 }; int Length= sizeof(Arr)/sizeof(Arr[0]); cout <<endl<< "Number of trailing zeroes : "<<trailZeros(Arr,Length); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Number of trailing zeroes : 5