একটি ইন্টারভাল [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