দুটি নম্বর start এবং end রেঞ্জ ভেরিয়েবল এবং একটি ইন্টিজার q ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হল রেঞ্জে যেসব নম্বরের সাথে তার q-দিয়ে গুণফলে কোনো কমন ডিজিট নেই, তাদের সংখ্যা বের করা।
যদি নম্বর ৫ এবং q=3 হয়, গুণফল ১৫। উভয়ে ৫ কমন ডিজিট।
যদি নম্বর ২ এবং q=5 হয়, গুণফল ১০। কমন ডিজিট নেই।
উদাহরণ দিয়ে বোঝা যাক
উদাহরণ ১
ইনপুট - start = 5, end = 10, q = 2
আউটপুট - ডিজিট অসমান হলে সংখ্যা: ৫
ব্যাখ্যা - সংখ্যাগুলো: ৫ (৫×২=১০), ৬ (১২), ৭ (১৪), ৮ (১৬), ৯ (১৮)।
উদাহরণ ২
ইনপুট - start = 20, end = 25, q = 5
আউটপুট - ডিজিট অসমান হলে সংখ্যা: ২
ব্যাখ্যা - সংখ্যাগুলো: ২২ (২২×৫=১১০), ২৩ (১১৫)।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
start থেকে end পর্যন্ত ট্রাভার্স করে প্রতিটি নম্বর এবং তার q দিয়ে গুণফল স্ট্রিংএ কনভার্ট করা হয়। অ্যারে arr[26]-এ বর্তমান নম্বরের ক্যারেক্টার ফ্রিকোয়েন্সি সংরক্ষণ করা হয়। গুণফলের স্ট্রিং ট্রাভার্স করে যদি কোনো ক্যারেক্টার ফ্রিকোয়েন্সি নন-জিরো হয় তবে কমন ডিজিট আছে, ০ রিটার্ন করুন। অন্যথায় ১ রিটার্ন করুন।
- রেঞ্জ ভেরিয়েবল এবং q ইনপুট নিন।
- ফাংশন
check(int i, int q)নম্বর i এবং q নিয়ে ১ রিটার্ন করে যদি ডিজিট কমন না হয়। - i কে স্ট্রিং
str-এ কনভার্ট করুন। - গুণফল
temp = q*iস্ট্রিংstr_2-এ কনভার্ট করুন। - ফ্রিকোয়েন্সি অ্যারে
arr[26]={0}। strট্রাভার্স করে ফ্রিকোয়েন্সি আপডেট করুন।str_2ট্রাভার্স করে যদিarr[str_2[j]-'0']নন-জিরো হয় তবে ০ রিটার্ন করুন।- অন্যথায় ১ রিটার্ন করুন।
- ফাংশন
unequal(int start, int end, int q)রেঞ্জ এবং q নিয়ে ফলাফল রিটার্ন করে। - প্রাথমিক কাউন্ট ০।
- i=start থেকে end পর্যন্ত লুপ:
check(i,q)true হলে কাউন্ট বাড়ান। - চূড়ান্ত কাউন্ট রিটার্ন করুন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int check(int i, int q) {
string str = to_string(i);
int length = str.size();
int arr[26] = {0};
int temp = i * q;
string str_2 = to_string(temp);
int length_2 = str_2.size();
for (int j = 0; j < length; j++) arr[str[j] - '0']++;
for (int j = 0; j < length_2; j++) {
if (arr[str_2[j] - '0']) return 0;
}
return 1;
}
int unequal(int start, int end, int q) {
int count = 0;
for (int i = start; i <= end; i++) {
if (check(i, q)) count++;
}
return count;
}
int main() {
int start = 20, end = 40, q = 4;
cout << "Count of numbers in range such that digits in it and it's product with q are unequal are: " << unequal(start, end, q);
return 0;
}
উপরের কোড রান করলে নিচের আউটপুটটি পাওয়া যাবে:
আউটপুট
Count of numbers in range such that digits in it and it's product with q are unequal are: 1