রেঞ্জ ভেরিয়েবল হিসাবে দুটি সংখ্যা শুরু এবং শেষ এবং ইনপুট হিসাবে একটি পূর্ণসংখ্যা 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