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

সি++-এ প্রথম ও শেষ অঙ্ক একই থাকা সংখ্যা গণনা

একটি ইন্টারভাল [first, last] দেওয়া আছে। লক্ষ্য হল এই ইন্টারভালে প্রথম এবং শেষ অঙ্ক একই থাকা সংখ্যাগুলোর গণনা করা। যেমন ২৩২-এর প্রথম ও শেষ অঙ্ক উভয়ই ২।

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

উদাহরণ

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

আউটপুট: প্রথম ও শেষ অঙ্ক একই সংখ্যার গণনা: ৫

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

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

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

ব্যাখ্যা: ১০০ এবং ২০০-এর মধ্যবর্তী: ১০১, ১১১, ১২১, ১৩১, ১৪১, ১৫১, ১৬১, ১৭১, ১৮১, ১৯১।

অ্যাপ্রোচ

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

উদাহরণ কোড

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

int getFirstDigit(int num) {
    while (num >= 10) {
        num = num / 10;
    }
    return num;
}

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

int main() {
    int first = 10, last = 23;
    cout << "Numbers with same first and last digits:" << getCount(first, last);
    return 0;
}

আউটপুট

Numbers with same first and last digits: 2
  1. C++-এ নির্দিষ্ট রেঞ্জে সবচেয়ে ছোট ফ্যাক্টর K হয় এমন সংখ্যা গণনা

  2. শুধু ৩ ও ৮ ডিজিট দিয়ে সংখ্যা তৈরি করা C++-এ

  3. C++-এ সম ও বিষম পজিশনের অঙ্কের যোগফলের পরম পার্থক্য ১ হলে এমন n-অঙ্কের সংখ্যা প্রিন্ট করা

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