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

রেঞ্জে প্রথম এবং শেষ ডিজিট সমান হলে সংখ্যা গণনা (C++)

start এবং end এর মধ্যে একটি সংখ্যা রেঞ্জ দেওয়া আছে। লক্ষ্য হল রেঞ্জ [start, end]-এ থাকা যেসব সংখ্যার প্রথম ডিজিট এবং শেষ ডিজিট সমান, তাদের সংখ্যা বের করা।

সব একক ডিজিটের সংখ্যা যদি রেঞ্জে থাকে তবে গণ্য হবে।

উদাহরণ দিয়ে বোঝা যাক

উদাহরণ ১

ইনপুট - start = 100, end = 200

আউটপুট - প্রথম এবং শেষ ডিজিট সমান হলে সংখ্যা: ১০

ব্যাখ্যা - সংখ্যাগুলো: ১০১, ১২১, ১৩১, ১৪১, ১৫১, ১৬১, ১৭১, ১৮১, ১৯১।

উদাহরণ ২

ইনপুট - start = 1, end = 10

আউটপুট - প্রথম এবং শেষ ডিজিট সমান হলে সংখ্যা: ৯

ব্যাখ্যা - সব ১-ডিজিটের সংখ্যা গণ্য হবে: ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

সব একক ডিজিটের সংখ্যা রেঞ্জে থাকলে গণ্য হবে। এখন প্রতিটি নম্বরের জন্য প্রথম এবং শেষ ডিজিট চেক করুন। যদি প্রথম ডিজিট শেষ ডিজিটের চেয়ে বড় হয় তবে 8 + val/10 কাউন্টে যোগ করুন, যদি ছোট হয় তবে 9 + val/10 যোগ করুন। এখানে val হলো রিকার্সিভ কল range(int val)-এ বর্তমান নম্বর।

  • ইন্টিজার start এবং end রেঞ্জ ভেরিয়েবল হিসেবে নিন।
  • count = range(end) - range(start)।
  • ফাংশন range(int val) ইন্টিজার নম্বর নিয়ে ফলাফল রিটার্ন করে।
  • প্রাথমিক কাউন্ট ০।
  • end = val%10 (শেষ ডিজিট)।
  • যদি val < 10 হয় (একক ডিজিট) তবে val রিটার্ন করুন।
  • হোয়াইল লুপে start = val%10, val/=10 করে প্রথম ডিজিট বের করুন।
  • যদি start <= end হয় তবে count = 9 + set_val/10।
  • যদি end হয় তবে count = 8 + set_val/10।
  • চূড়ান্ত count রিটার্ন করুন।

উদাহরণ কোড

#include <iostream>
using namespace std;

int range(int val) {
    int count = 0;
    int start;
    int end = val % 10;
    int set_val = val;
    if (val < 10) return val;
    end = val % 10;
    while (val) {
        start = val % 10;
        val = val / 10;
    }
    if (start <= end) {
        count = 9 + set_val / 10;
    } else {
        count = 8 + set_val / 10;
    }
    return count;
}

int main() {
    int start = 10, end = 50;
    int count = range(end) - range(start);
    cout << "Count of Numbers in Range where first digit is equal to last digit of the number are: " << count;
    return 0;
}

উপরের কোড রান করলে নিচের আউটপুটটি পাওয়া যাবে:

আউটপুট

Count of Numbers in Range where first digit is equal to last digit of the number are: 4
  1. সি++-এ [a,b] রেঞ্জে যোগফল পড়ে এমন ট্রিপলেট গণনা

  2. C++-এ n-ডিজিট সংখ্যা যেগুলো দেওয়া সংখ্যা দিয়ে বিভাজ্য

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

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