কম্পিউটার টিউটোরিয়াল

সি++-এ বাইনারি স্ট্রিংয়ের জোড় দশমিক মান বালা সাবস্ট্রিং গণনা

শুধু ০ এবং ১-এর একটি স্ট্রিং দেওয়া আছে। এটি বাম থেকে ডানে পড়া একটি বাইনারি সংখ্যা প্রকাশ করে। অর্থাৎ 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
  1. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  2. C++-এ বাইনারি ট্রি-এ ম্যাক্সিমাল ভ্যালু রুট (Maximal Value Roots) গণনা করার প্রোগ্রাম

  3. C++-এ বাইনারি সার্চ দিয়ে স্ট্রিং খোঁজা

  4. C++-এ বাইনারি থেকে ডেসিমেল কনভার্সন প্রোগ্রাম