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

C++-এ ফ্যাক্টোরিয়ালে অঙ্ক গণনা

আমাদের একটি পূর্ণসংখ্যা মান দেওয়া আছে এবং আমাদের কাজ হল প্রথমে সেই সংখ্যার ফ্যাক্টোরিয়াল গণনা করা এবং তারপর ফলাফলে মোট কতগুলো অঙ্ক আছে তা বের করা।

ফ্যাক্টোরিয়াল সংখ্যা কী?

একটি সংখ্যার ফ্যাক্টোরিয়াল হল সেই সংখ্যাটি ১ করে কমিয়ে গুণ করা। এটিকে '!' চিহ্ন দিয়ে প্রকাশ করা হয়: 0!, 1!, 2!, 3!, 5! ইত্যাদি। 0! এবং 1! সবসময় ১।

যেমন 2-এর ফ্যাক্টোরিয়াল = 2 * (2-1) = 2 * 1 = 2
3-এর ফ্যাক্টোরিয়াল = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6

উদাহরণ

ইনপুট − factorial(6) আউটপুট − factorial(6)-এ অঙ্কের সংখ্যা: 3

ব্যাখ্যা − 6-এর ফ্যাক্টোরিয়াল মান 720 যাতে ৩টি অঙ্ক রয়েছে, তাই ফলাফল ৩।

ইনপুট − factorial(12) আউটপুট − factorial(12)-এ অঙ্কের সংখ্যা: 9

ব্যাখ্যা − 12-এর ফ্যাক্টোরিয়াল মান 479001600 যাতে ৯টি অঙ্ক রয়েছে, তাই ফলাফল ৯।

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

  • যে সংখ্যার ফ্যাক্টোরিয়াল বের করতে হবে তা ইনপুট নিন
  • যদি সংখ্যা < 0 হয় তবে 0 ফেরত দিন কারণ ঋণাত্মক সংখ্যার ফ্যাক্টোরিয়াল নেই
  • যদি সংখ্যা 1 হয় তবে 1 ফেরত দিন কারণ 1! = 1 এবং এর ১টি অঙ্ক
  • যদি সংখ্যা > 1 হয় (অর্থাৎ ২ বা তার বেশি) তবে একটি লুপ তৈরি করুন i = 2 থেকে i <= num পর্যন্ত
  • একটি অস্থায়ী ভেরিয়েবল d নিন, 0 দিয়ে আরম্ভ করুন লুপের বাইরে এবং লুপের ভিতরে প্রতিটি ইটারেশনে log10(i) যোগ করুন
  • তারপর floor(d) + 1 ফেরত দিন
  • ফলাফল প্রিন্ট করুন

উদাহরণ কোড

#include <iostream>
#include <cmath>
using namespace std;

// এই ফাংশন num!-এ উপস্থিত অঙ্কের সংখ্যা ফেরত দেয়
int count_digits(int num) {
    // ফ্যাক্টোরিয়াল শুধু থাকে যদি num <= 0
    if (num < 0) {
        return 0;
    }
    // বেস কেস
    if (num <= 1) {
        return 1;
    }
    // অন্যথায় num-এর মাধ্যমে ইটারেট করে মান গণনা
    double d = 0;
    for (int i = 2; i <= num; i++) {
        d += log10(i);
    }
    return floor(d) + 1;
}

int main() {
    cout << "number of digits in factorial(1) is: " << count_digits(1) << endl;
    cout << "number of digits in factorial(6) is: " << count_digits(6) << endl;
    cout << "number of digits in factorial(106) is: " << count_digits(106) << endl;
    return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি রান করি তবে নিচের আউটপুট পাব −

number of digits in factorial(1) is: 1
number of digits in factorial(6) is: 3
number of digits in factorial(106) is: 171
  1. সি++-এ আয়তক্ষেত্রে বর্গের সংখ্যা গণনা

  2. C++-এ ফ্যাক্টোরিয়ালের ট্রেইলিং জিরো (Factorial Trailing Zeroes)

  3. ফ্যাক্টোরিয়ালের ডিজিটের যোগফল (C++)

  4. সি++ প্রোগ্রাম: সংখ্যা বিভাজ্য করে এমন অঙ্কগুলোর গণনা (Count of Digits Dividing the Number)