আমাদের একটি সংখ্যা N ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো ১ থেকে N পর্যন্ত মোট কতগুলো ডিজিট আছে তা বের করা। ১ থেকে ৯: ১ ডিজিট করে, ১১ থেকে ৯৯: ২ ডিজিট করে, ১০০ থেকে ৯৯৯: ৩ ডিজিট করে — এভাবেই চলতে থাকবে।
উদাহরণ দিয়ে বুঝি
ইনপুট − N=11
আউটপুট − ১ থেকে N পর্যন্ত মোট ডিজিট সংখ্যা: ১৩
ব্যাখ্যা − ১ থেকে ৯: ১ ডিজিট করে ৯টি = ৯ ডিজিট। ১০, ১১: ২ ডিজিট করে ৪টি। মোট = ৯+৪=১৩।
ইনপুট − N=999
আউটপুট − ১ থেকে N পর্যন্ত মোট ডিজিট সংখ্যা: ২৮৮৯
ব্যাখ্যা − ১-৯: ৯ ডিজিট। ১০-৯৯: ১৮০ ডিজিট। ১০০-৯৯৯: ২৭০০ ডিজিট। মোট = ২৭০০+১৮০+৯ = ২৮৮৯।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
দুটি পদ্ধতি ব্যবহার করা হয়েছে। প্রথমটি নেভ הפשט রিকার্সিভ পদ্ধতি: প্রতিটি সংখ্যার ডিজিট গণনা করুন। পাস করা num-কে স্ট্রিং-এ কনভার্ট করুন। স্ট্রিং-এর দৈর্ঘ্যই ডিজিট সংখ্যা। প্রতিটি সংখ্যায় num-1 রিকার্সিভ কল দিয়ে করুন।
- পজিটিভ ইন্টিজার
numনিন। total_digits(int num)ফাংশনnumনিয়ে ১ থেকেnumপর্যন্ত ডিজিট রিটার্ন করে।num-কে স্ট্রিং-এ কনভার্ট করুন (to_string(num))।- স্ট্রিং দৈর্ঘ্য = ডিজিট সংখ্যা।
- যদি
num == 1, ১ রিটার্ন করুন। অন্যথায়length + total_digits(num-1)রিটার্ন করুন।
দক্ষ পদ্ধতি (Efficient Approach)
এই পদ্ধতিতে আমরা লজিক ব্যবহার করি: প্রতিটি সংখ্যা পর্যন্ত। ১০, ১০০, ১০০০... N পর্যন্ত ট্রাভার্স করব। প্রতিটি 10^i এর জন্য ডিজিট সংখ্যা (num-i+1)।
- পজিটিভ ইন্টিজার
numনিন। total_digits(int num)ফাংশনnumনিয়ে ১ থেকেnumপর্যন্ত ডিজিট রিটার্ন করে।- মোট কাউন্ট ০ ইনিশিয়ালাইজ করুন।
i=1থেকেi<=num,i *= 10বাড়াতে থাকুন এবংcount += num-i+1যোগ করুন।- লুপ শেষে
countরিটার্ন করুন।
উদাহরণ (নেভ הפשט পদ্ধতি)
#include <bits/stdc++.h>
using namespace std;
int total_digits(int num) {
string str = to_string(num);
int length = str.length();
if (num == 1) {
return 1;
}
return length + total_digits(num - 1);
}
int main() {
int num = 20;
cout << "Count of total number of digits from 1 to n are: " << total_digits(num);
return 0;
}
আউটপুট
Count of total number of digits from 1 to n are: 31
উদাহরণ (দক্ষ পদ্ধতি)
#include <bits/stdc++.h>
using namespace std;
int total_digits(int num) {
int count = 0;
for (int i = 1; i <= num; i *= 10) {
count = count + (num - i + 1);
}
return count;
}
int main() {
int num = 20;
cout << "Count of total number of digits from 1 to n are: " << total_digits(num);
return 0;
}
আউটপুট
Count of total number of digits from 1 to n are: 31