हमें केवल 0 और 1 की एक स्ट्रिंग दी गई है। यह स्ट्रिंग बाएं से दाएं पढ़ी जाने वाली एक बाइनरी संख्या को दर्शाती है। यानी 001, 4 है न कि 1। लक्ष्य उन सभी सबस्ट्रिंग्स को ढूंढना है जो एक सम दशमलव संख्या को दर्शाती हैं।
हम इसे सभी सबस्ट्रिंग्स के पहले मान की जांच करके करेंगे, यदि यह 0 है तो संख्या सम है, यदि 1 है तो संख्या विषम होगी। काउंट को length-i से बढ़ाएंगे क्योंकि इस सबस्ट्रिंग[0]='0' से शुरू होने वाले सभी सबस्ट्रिंग्स दशमलव में सम होंगे।
आइए उदाहरणों से समझते हैं।
इनपुट - str="101"
आउटपुट - बाइनरी स्ट्रिंग में सम दशमलव मान वाले सबस्ट्रिंग्स की संख्या: 2
व्याख्या - संभावित सबस्ट्रिंग्स: 10, 11, 01, 0, 1 जिनमें से 01, 2 है और 0, 0 है, 2 सम हैं।
इनपुट - str="111"
आउटपुट - बाइनरी स्ट्रिंग में सम दशमलव मान वाले सबस्ट्रिंग्स की संख्या: 0
व्याख्या - संभावित सबस्ट्रिंग्स: 11, 1 जिनमें से कोई भी सम नहीं है।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम केवल 0 और 1 की एक स्ट्रिंग str लेते हैं।
str की लंबाई को len=str.length() में स्टोर करते हैं।
फंक्शन count_even(string str, int length) स्ट्रिंग और उसकी लंबाई लेता है और सम दशमलव संख्या बनाने वाले सबस्ट्रिंग्स की गिनती लौटाता है।
FOR लूप का उपयोग करके स्ट्रिंग को पार करते हैं।
इंडेक्स i=0 से i
यदि कोई str[i]=='0' है तो उससे शुरू होने वाले सभी सबस्ट्रिंग्स दशमलव में सम होंगे।
काउंट को length-i से बढ़ाते हैं।
काउंट को परिणाम के रूप में लौटाते हैं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int count_even(string str, int length){ int count = 0; for (int i = 0; i < length; i++){ if (str[i] == '0'){ count += (length - i); } } return count; } int main(){ string str = "00111"; int len = str.length(); cout<<"बाइनरी स्ट्रिंग में सम दशमलव मान वाले सबस्ट्रिंग्स की संख्या: "<<count_even(str, len) << endl; return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
बाइनरी स्ट्रिंग में सम दशमलव मान वाले सबस्ट्रिंग्स की संख्या: 9