हमें केवल 0 और 1 की स्ट्रिंग दी गई है। स्ट्रिंग बाएं से दाएं पढ़ने वाली बाइनरी संख्या का प्रतिनिधित्व करती है। यानी 001 4 है और 1 नहीं। लक्ष्य सभी सबस्ट्रिंग्स को ढूंढना है जो एक दशमलव संख्या का प्रतिनिधित्व करते हैं।
हम सभी सबस्ट्रिंग के पहले मान की जांच करके ऐसा करेंगे, यदि यह 0 है तो संख्या भी 1 है तो संख्या विषम होगी। लंबाई-i द्वारा वृद्धि की गणना, क्योंकि इस sbstr[0]='0' के साथ सभी सबस्ट्रिंग दशमलव में भी होंगे।
आइए उदाहरणों से समझते हैं।
इनपुट - str="101"
आउटपुट − बाइनरी स्ट्रिंग में सम दशमलव मान सबस्ट्रिंग की संख्या है − 2
स्पष्टीकरण - संभव सबस्ट्रिंग हैं:10, 11, 01, 0, 1 जिनमें से 01 है 2 और 0 है 0, 2 सम हैं।
इनपुट - str="111"
आउटपुट − बाइनरी स्ट्रिंग में सम दशमलव मान सबस्ट्रिंग की संख्या है − 0
स्पष्टीकरण − सबस्ट्रिंग संभव हैं - 11,1 जिनमें से कोई भी सम नहीं है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम एक स्ट्रिंग str को केवल 0s और 1 के रूप में लेते हैं।
-
str की लंबाई को len=str.length()
में स्टोर करें -
फ़ंक्शन count_even(string str, int length) स्ट्रिंग और उसकी लंबाई लेता है और उन सबस्ट्रिंग्स की गिनती देता है जो एक दशमलव संख्या बनाते हैं।
-
फ़ोर लूप का उपयोग करके ट्रैवर्स स्ट्रिंग
-
इंडेक्स i=0 से i
-
अगर कोई str[i]=='0' का मतलब है कि इससे शुरू होने वाले सभी सबस्ट्रिंग दशमलव में भी होंगे।
-
वेतन वृद्धि की गणना लंबाई-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 of even decimal value substrings in a binary string are: "<<count_even(str, len) << endl; return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of even decimal value substrings in a binary string are: 9