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

সি++-এ দিয়ে রেঞ্জে এককের অঙ্ক k থাকা সংখ্যা গণনা

একটি ইন্টারভাল [first, last] দেওয়া আছে। লক্ষ্য হল এই রেঞ্জে এককের অঙ্ক (unit digit) k থাকা সংখ্যাগুলোর গণনা করা।

i=first থেকে i=last পর্যন্ত ট্রাভার্স করা হয়। প্রতিটি সংখ্যা i-এর এককের অঙ্ক k-এর সাথে তুলনা করা হয়। একই হলে count বাড়ানো হয়।

উদাহরণ

ইনপুট: first=8, last=40, k=8

আউটপুট: এককের অঙ্ক k থাকা সংখ্যার গণনা: ৪

ব্যাখ্যা: ৮ এবং ৪০-এর মধ্যবর্তী এককের অঙ্ক ৮ থাকা সংখ্যা: ৮, ১৮, ২৮, ৩৮

ইনপুট: first=100, last=200, k=9

আউটপুট: এককের অঙ্ক k থাকা সংখ্যার গণনা: ১০

ব্যাখ্যা: ১০০ এবং ২০০-এর মধ্যবর্তী এককের অঙ্ক ৯ থাকা সংখ্যা: ১০৯, ১১৯, ১২৯, ১৩৯, ১৪৯, ১৫৯, ১৬৯, ১৭৯, ১৮৯, ১৯৯। মোট: ১০

অ্যাপ্রোচ

  • first এবং last ইন্টিজার দিয়ে রেঞ্জ [first, last] নির্ধারণ করা হয়।
  • getCount(int fst, int lst, int k) ফাংশন রেঞ্জ এবং k গ্রহণ করে fst এবং lst-এর মধ্যবর্তী এককের অঙ্ক k থাকা সংখ্যার গণনা রিটার্ন করে।
  • প্রাথমিক count ০।
  • for লুপে i=fst থেকে i<=lst পর্যন্ত: ldigit = i%10 (এককের অঙ্ক)। ldigit == k হলে count বাড়ানো হয়।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int getCount(int fst, int lst, int k) {
    int count = 0;
    for (int i = fst; i <= lst; i++) {
        int ldigit = i % 10;
        if (ldigit == k) {
            ++count;
        }
    }
    return count;
}

int main() {
    int first = 5, last = 30;
    int K = 5;
    cout << "Numbers with unit digit K in range:" << getCount(first, last, K);
    return 0;
}

আউটপুট

Numbers with unit digit K in range: 3
  1. C++-এ নির্দিষ্ট রেঞ্জে সবচেয়ে ছোট ফ্যাক্টর K হয় এমন সংখ্যা গণনা

  2. C++-এ দেওয়া XOR সমান হয় এমন জোড়া (Pair) গণনা

  3. C++-এ ১ থেকে n পর্যন্ত ৪ ডিজিট থাকা সংখ্যা গণনা (Count Numbers with Digit 4)

  4. C++-এ d-ডিজিটের ধনাত্মক পূর্ণসংখ্যা যেগুলোতে ০ ডিজিট থাকে (Count d-digit Numbers with Digit 0)