শুধু ০ এবং ১-এর একটি স্ট্রিং দেওয়া আছে। এটি বাম থেকে ডানে পড়া একটি বাইনারি সংখ্যা প্রকাশ করে। অর্থাৎ 001 হল ৪, ১ নয়। লক্ষ্য হল সব সাবস্ট্রিং খুঁজে বের করা যারা জোড় দশমিক সংখ্যা প্রকাশ করে।
আমরা সব সাবস্ট্রিংয়ের প্রথম মান চেক করব: যদি ০ হয় তবে দশমিকে সংখ্যাটি জোড় হবে, ১ হলে বিজোড়। যেহেতু সব সাবস্ট্রিং যেনের প্রথম অক্ষর '০' সেগুলো দশমিকে জোড় হবে, তাই count += (length - i) করে যোগ করা হয়।
উদাহরণ
ইনপুট: str="101"
আউটপুট: বাইনারি স্ট্রিংয়ের জোড় দশমিক মান বালা সাবস্ট্রিংয়ের সংখ্যা: ২
ব্যাখ্যা: সম্ভাব্য সাবস্ট্রিং: 10, 11, 01, 0, 1। যistration 01 হল ২ এবং 0 হল ০, ২টি জোড়।
ইনপুট: str="111"
আউটপুট: বাইনারি স্ট্রিংয়ের জোড় দশমিক মান বালা সাবস্ট্রিংয়ের সংখ্যা: ০
ব্যাখ্যা: সম্ভাব্য সাবস্ট্রিং: 11, 1। যinie কোনোটিই জোড় নয়।
অ্যাপ্রোচ
- str নামে ০ এবং ১-এর স্ট্রিং নেওয়া হয়।
- len = str.length() দিয়ে দৈর্ঘ্য সংরক্ষণ করা হয়।
count_even(string str, int length)ফাংশন স্ট্রিং এবং দৈর্ঘ্য গ্রহণ করে জোড় দশমিক সংখ্যা গঠনকারী সাবস্ট্রিংয়ের গণনা রিটার্ন করে।- for লুপ দিয়ে স্ট্রিং ট্রাভার্স করা হয় (i=0 থেকে i
- যদি str[i] == '0' হয়, তবে সেই ইনডেক্স থেকে শুরু হওয়া সব সাবস্ট্রিং দশমিকে জোড় হবে।
- count += (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 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