০ থেকে ৯ পর্যন্ত সংখ্যার একটি স্ট্রিং দেওয়া আছে। এই স্ট্রিং একটি দশমিক সংখ্যা প্রকাশ করে। লক্ষ্য হল সব সাবস্ট্রিং খুঁজে বের করা যারা একটি দশমিক সংখ্যা প্রকাশ করে যা X-এর চেয়ে বড়। শর্ত হল সাবস্ট্রিংটি ০ দিয়ে শুরু হবে না। যেমন "2021"-এ "02", "021", "0" অন্তর্ভুক্ত হবে না।
উদাহরণ
ইনপুট: str="123", X=12
আউটপুট: X-এর চেয়ে বড় সংখ্যাগত মান বালা সাবস্ট্রিংয়ের সংখ্যা: ২
ব্যাখ্যা: ১২-এর চেয়ে বড় সাবস্ট্রিং: ১২৩ এবং ২৩।
ইনপুট: str="111", X=100
আউটপুট: X-এর চেয়ে বড় সংখ্যাগত মান বালা সাবস্ট্রিংয়ের সংখ্যা: ১
ব্যাখ্যা: শুধু ১১১, ১০০-এর চেয়ে বড়।
অ্যাপ্রোচ
- str নামে শুধু সংখ্যার স্ট্রিং নেওয়া হয়।
- len = str.length() দিয়ে দৈর্ঘ্য সংরক্ষণ করা হয়।
greater_X(string str, int x)ফাংশন স্ট্রিং এবং এর দৈর্ঘ্য গ্রহণ করে X-এর চেয়ে বড় দশমিক সংখ্যা গঠনকারী সাবস্ট্রিংয়ের গণনা রিটার্ন করে।- for লুপ দিয়ে স্ট্রিং ট্রাভার্স করা হয় (i=0 থেকে i
- যদি str[i] != '0' হয়, তবে সেই ইনডেক্স থেকে শুরু হওয়া সব সাবস্ট্রিং বৈধ।
- j=1 থেকে i+j<=len পর্যন্ত সাবস্ট্রিং দৈর্ঘ্য বাড়িয়ে str.substr(i,j) কে stoi() দিয়ে দশমিকে রূপান্তর করা হয়। যদি X-এর চেয়ে বড় হয়, count বাড়ানো হয়।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int greater_X(string str, int x) {
int count = 0;
int len = str.length();
for (int i = 0; i < len; ++i) {
if (str[i] != '0') {
for (int j = 1; (i + j) <= len; ++j) {
if (stoi(str.substr(i, j)) > x) {
count++;
}
}
}
}
return count;
}
int main() {
string str = "987";
int x = 100;
cout << "Count of number of substrings with numeric value greater than X are: " << greater_X(str, x);
return 0;
}
আউটপুট
Count of number of substrings with numeric value greater than X are: 1