একটি রেঞ্জ [l,r] এবং একটি সংখ্যা k দেওয়া আছে। লক্ষ্য হল l এবং r-এর মধ্যবর্তী (l<=number<=r) সব সংখ্যা বের করা যাতে (সে সংখ্যার রিভার্স) - (সেই সংখ্যা) এর ফলাফল k-এর গুণফল হয়।
l থেকে r পর্যন্ত প্রতিটি সংখ্যার রিভার্স বের করা হয়। সংখ্যাটি তার রিভার্স থেকে বিয়োগ করে निरপেক্ষ পার্থক্য (absolute difference) %k==0 কিনা চেক করা হয়। হলে count বাড়ানো হয়।
উদাহরণ
ইনপুট: L=21, R=25, K=6
আউটপুট: সংখ্যা গণনা: ২
ব্যাখ্যা:
21, 12, |21-12|=9, 9%6!=0 22, 22, |22-22|=0, 0%6=0 count=1 23, 32, |32-23|=9, 9%6!=0 24, 42, |42-24|=18, 18%6=0 count=2 25, 52, |52-25|=27, 27%6!=0 শর্ত পূরণকারী সংখ্যা: 22, 24
ইনপুট: L=11, R=15, K=5
আউটপুট: সংখ্যা গণনা: ১
ব্যাখ্যা: একমাত্র সংখ্যা ১১, |11-11|=0 এবং 0%5=0
অ্যাপ্রোচ
- L, R ইন্টিজার রেঞ্জ এবং K বিভাজ্যতা যাচাই জন্য।
countNumbers(int l, int r, int k)ফাংশন l, r, k গ্রহণ করে শর্ত পূরণকারী সংখ্যার গণনা রিটার্ন করে।- প্রাথমিক count ০, rev=0, rem=0।
- for লুপে i=l থেকে i<=r পর্যন্ত: num=i, rev=0। while(num>0) লুপে rem=num%10, rev=rev*10+rem, num/=10 করে রিভার্স বের করা হয়।
- যদি abs(i-rev)%k==0 হয়, count++।
উদাহরণ কোড
#include <iostream>
using namespace std;
int countNumbers(int l, int r, int k) {
int rev = 0, count = 0, rem = 0;
for (int i = l; i <= r; i++) {
int num = i;
rev = 0;
while (num > 0) {
rem = num % 10;
rev = rev * 10 + rem;
num /= 10;
}
if ((abs(i - rev)) % k == 0) {
count++;
}
}
return count;
}
int main() {
int L = 18, R = 24, K = 6;
cout << " Numbers whose difference with reverse is product of k:" << countNumbers(L, R, K);
return 0;
}
আউটপুট
Numbers whose difference with reverse is product of k: 4