हमें आकार N का धनात्मक पूर्णांकों का एक सरणी Arr[] दिया गया है। लक्ष्य सरणी के सभी तत्वों के गुणनफल में मौजूद अनुगामी शून्यों की संख्या गिनना है।
हम इसे प्रत्येक संख्या के गुणनखंडों को गिनकर करेंगे। हम प्रत्येक संख्या के 2 और 5 के गुणनखंडों को गिनेंगे क्योंकि 2 और 5 का गुणनफल 10 होता है जो 1 अनुगामी 0 देता है। अंत में जो भी काउंट छोटा होगा वह गुणनफल में अनुगामी शून्यों की संख्या देगा। यदि हमारे पास 4 दो हैं और 6 पांच हैं तो गुणनफल में 4 अनुगामी शून्य होंगे - 2*2*2*2*5*5*5*5*5*5 = 250000
उदाहरण से समझते हैं
इनपुट
Arr[] = { 2, 5, 10, 15, 20, 25, 100 } आउटपुट
अनुगामी शून्यों की संख्या: 6
व्याख्या
Arr[] के प्रत्येक तत्व के 2 और 5 गुणनखंड: Arr[0] = 2: 2 दो=1, पांच=0 Arr[1] = 5: 5 दो=1, पांच=1 Arr[2] = 10: 2*5 दो=2, पांच=2 Arr[3] = 15: 3*5 दो=2, पांच=3 Arr[4] = 20: 2*2*5 दो=4, पांच=4 Arr[5] = 25: 5*5 दो=4, पांच=6 Arr[6] = 100: 2*2*5*5 दो=6, पांच=8 2 की संख्या कम है इसलिए अनुगामी शून्य 6 होंगे।
इनपुट
Arr[] = { 10,10,10,10,10 } आउटपुट
अनुगामी शून्यों की संख्या: 5
व्याख्या
Arr[] के प्रत्येक तत्व के 2 और 5 गुणनखंड: Arr[0] = 10: 2*5 दो=1, पांच=1 Arr[1] = 10: 2*5 दो=2, पांच=2 Arr[2] = 10: 2*5 दो=3, पांच=3 Arr[3] = 10: 2*5 दो=4, पांच=4 Arr[4] = 10: 2*5 दो=5, पांच=5 2 और 5 की संख्या बराबर है इसलिए अनुगामी शून्य 5 होंगे।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम आकार N का धनात्मक पूर्णांकों का एक सरणी लेते हैं।
फ़ंक्शन trailZeros(int arr[],int n) सरणी और n को इनपुट के रूप में लेता है और सभी तत्वों के गुणनफल में अनुगामी शून्यों की संख्या लौटाता है।
प्रारंभिक चर count को 0 से आरंभ करें शून्यों की संख्या के लिए।
दो चर twos और fives लें 2s और 5s के गुणनखंडों की गिनती के रूप में।
फॉर लूप का उपयोग करके सरणी को पार करें।
प्रत्येक तत्व के लिए यदि यह 2 या 5 से विभाज्य है तो twos और fives बढ़ाएं और इसे 2 या 5 से विभाजित करके कम करें।
फॉर लूप के अंत में twos और fives के मान की जांच करें जो भी छोटा हो।
कम वाले के साथ काउंट आरंभ करें।
काउंट को परिणाम के रूप में लौटाएं।
उदाहरण
#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<< "अनुगामी शून्यों की संख्या: "<<trailZeros(Arr,Length); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
अनुगामी शून्यों की संख्या: 5