একটি পূর্ণসংখ্যা k দেওয়া আছে। এমন সংখ্যাকে "বিশেষ সংখ্যা" বলা হয় যেটির সব অঙ্ক একই। যেমন: 1, 11, 1111। বিশেষ সংখ্যাগুলোকে ১, ১১, ১১১, ১১১১, ২, ২২, ২২২, ২২২২, ৩, ৩৩, ৩৩৩, ৩৩৩৩ ... এই ক্রমে গণনা করা হয়। k পর্যন্ত বিশেষ সংখ্যাগুলোর মোট কতটি অঙ্ক আছে তা বের করতে হবে। k ≤ 10000।
সমাধানের ধাপসমূহ
k-কে স্ট্রিং-এ রূপান্তর করুন। প্রথম অঙ্ক এবং দৈর্ঘ্যের ভিত্তিতে ফর্মুলা ব্যবহার করুন: ((first_digit - 1) × 10) + v[length]। যেখানে v = {0, 1, 3, 6, 10}।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void solve(int k) {
string s = to_string(k);
int v[] = {0, 1, 3, 6, 10};
cout << ((s[0] - '0') - 1) * 10 + v[s.length()] << endl;
}
int main() {
int k = 9999;
solve(k);
return 0;
}
ইনপুট
9999
আউটপুট
90
ব্যাখ্যা
k=9999 হলে, প্রথম অঙ্ক ৯, দৈর্ঘ্য ৪। ফলাফল = (৯-১)×১০ + v[৪] = ৮০ + ১০ = ৯০।