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

C++-এ ১ থেকে N পর্যন্ত মোট ডিজিট সংখ্যা গণনা


আমাদের একটি সংখ্যা 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
  1. সি++-এ a^b-এর অঙ্ক সংখ্যা বের করা

  2. সি++-এ 2^n-এর অঙ্ক সংখ্যা বের করা

  3. সি++-এ {0,1,2,3,4,5} অঙ্ক দিয়ে বने n-তম সংখ্যা

  4. OpenCV-এ C++ ব্যবহার করে মোট ফ্রেম সংখ্যা গণনা করা