কম্পিউটার টিউটোরিয়াল

সি++-এ রিভার্সের সাথে পার্থক্য k-এর গুণফল হয় এমন সংখ্যা গণনা

একটি রেঞ্জ [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
  1. C++-তে অ্যারেতে থাকা সব প্রাইম নম্বরের গুণফল বের করা

  2. অ্যারে গুণফলের শেষ k ডিজিট বের করা (C++)

  3. 1 থেকে N পর্যন্ত অলমোস্ট প্রাইম সংখ্যার সংখ্যা বের করা C++-তে

  4. C++ প্রোগ্রাম: অ্যারে উপাদানগুলোর গুণফলের প্রথম ডিজিট বের করা