রেঞ্জ ভেরিয়েবল হিসাবে দুটি সংখ্যা শুরু এবং শেষ এবং ইনপুট হিসাবে একটি পূর্ণসংখ্যা q দেওয়া হয়েছে। লক্ষ্য হল সংখ্যাগুলিকে এমন একটি পরিসরের মধ্যে খুঁজে বের করা যাতে q সহ সংখ্যা এবং এর গুণফলের কোনো সাধারণ সংখ্যা নেই৷
সংখ্যাটি 5 এবং q 3 হলে গুণফল হবে 15৷ 5 এবং 15 উভয়েরই একটি সাধারণ অঙ্ক 5৷
সংখ্যাটি 2 এবং q 5 হলে গুণফল হবে 10৷ 2 এবং 10 উভয়েরই কোনো সাধারণ সংখ্যা নেই৷
আসুন উদাহরণ দিয়ে বোঝা যাক।
উদাহরণস্বরূপ
ইনপুট - শুরু =5, শেষ =10, q =2
আউটপুট - পরিসরে সংখ্যার গণনা যেমন এতে সংখ্যা এবং q সহ এর গুণফল অসম হয়:5
ব্যাখ্যা - সংখ্যাগুলো হবে:
- 5 ( 5 * 2 =10 )
- 6 ( 6 * 2 =12)
- 7 ( 7 * 2 =14 )
- 8 ( 8 * 2 =16 )
- 9 ( 9 * 2 =18 )
ইনপুট - শুরু =20, শেষ =25, q =5
আউটপুট - পরিসরে সংখ্যার গণনা যেমন এতে অঙ্ক এবং q সহ এর গুণফল অসম হয়:2
ব্যাখ্যা - সংখ্যাগুলো হবে:
- 22 ( 22 * 5 =110 )
- 23 ( 23 * 5 =115 )
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
এই পদ্ধতিতে আমরা শুরু থেকে শেষ পর্যন্ত অতিক্রম করব এবং প্রতিটি সংখ্যা এবং তার গুণফলকে q দিয়ে স্ট্রিং-এ রূপান্তর করব। এখন একটি অ্যারে arr[26] তৈরি করুন যা বর্তমান সংখ্যার অক্ষর গণনা সংরক্ষণ করবে। এখন পণ্যের স্ট্রিং ট্র্যাভার্স করুন (বর্তমান সংখ্যা * q) এবং যদি সেই স্ট্রিংটির কোনো অক্ষরের arr[] তে অ-শূন্য মান থাকে তবে এটি সাধারণ তাই 0 ফেরত দিন। অন্যথায় 1 ফেরত দিন।
- পরিসীমা ভেরিয়েবল এবং একটি মান q নিন।
- ফাংশন চেক (int i, int q) একটি সংখ্যা i এবং q নেয় এবং i এবং q এর সংখ্যা অসম বা সাধারণ না হলে 1 প্রদান করে।
- str =to_string(i) ব্যবহার করে iকে স্ট্রিংয়ে রূপান্তর করুন।
- str_2 =to_string(temp) ব্যবহার করে পণ্য ( temp=q*i ) কে স্টিং-এ রূপান্তর করুন।
- str এর অক্ষর গণনার জন্য ফ্রিকোয়েন্সি অ্যারে অ্যারে[26] ={ 0 } নিন।
- লুপ ব্যবহার করে ট্রাভার্স str এবং arr[str[j] - '0']++ ব্যবহার করে ফ্রিকোয়েন্সি আপডেট করুন।
- এ ফর লুপ ব্যবহার করে str_2 ট্র্যাভ করুন এবং চেক করুন যে কোনো arr[str_2[j] - '0'] নন-জিরো, যদি হ্যাঁ তাহলে সাধারণ। রিটার্ন 0।
- অন্যথায় 1 ফেরত দিন।
- ফাংশন অসম (int start, int end, int q) রেঞ্জ ভেরিয়েবল এবং q নেয় এবং পরিসরে সংখ্যার গণনা প্রদান করে যাতে এতে সংখ্যা এবং q এর সাথে এর গুণফল অসম হয়।
- প্রাথমিক গণনাকে 0 হিসাবে নিন।
- i-start থেকে i=end পর্যন্ত লুপ ব্যবহার করে সংখ্যা অতিক্রম করুন।
- চেক(i, q) ব্যবহার করে নির্ণয় করুন i সংখ্যা এবং q সহ এর গুণফলের কোন সংখ্যা সাধারণ নেই। যদি হ্যাঁ তাহলে ইনক্রিমেন্ট কাউন্ট।
- শেষে ফলাফল হিসাবে গণনা করুন।
উদাহরণ
#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