কম্পিউটার

C/C++ প্রোগ্রামটি একটি সংখ্যার ফ্যাক্টোরিয়ালের মধ্যে শূন্য গুনতে হয়?


এখানে আমরা দেখব কিভাবে যেকোন সংখ্যার ফ্যাক্টরিয়াল ফলাফলের জন্য 0 সেকেন্ডের পরবর্তী সংখ্যা গণনা করা যায়। তাহলে n =5 হলে 5! =120. শুধুমাত্র একটি ট্রাইলিং 0 আছে। 20! এর জন্য 20 হিসাবে 4টি শূন্য হবে! =2432902008176640000।

সবচেয়ে সহজ পদ্ধতি হল ফ্যাক্টরিয়াল গণনা করা এবং 0 সেকেন্ড গণনা করা। কিন্তু এই পদ্ধতি n এর বড় মানের জন্য ব্যর্থ হয়। তাই আমরা অন্য পদ্ধতি অনুসরণ করব। অনুগামী শূন্য সেখানে থাকবে, যদি মৌলিক গুণনীয়ক 2 এবং 5 হয়। যদি আমরা 2s এবং 5s গণনা করি তাহলে আমরা ফলাফল পেতে পারি। তার জন্য আমরা এই নিয়ম মেনে চলব।

অনুগামী 0s =ফ্যাক্টোরিয়াল(n)

এর প্রাইম ফ্যাক্টরগুলিতে 5s গণনা

C/C++ প্রোগ্রামটি একটি সংখ্যার ফ্যাক্টোরিয়ালের মধ্যে শূন্য গুনতে হয়?

অ্যালগরিদম

countTrailingZeros(n)

begin
   count := 0
   for i := 5, (n/i) >= 1, increase i := i * 5, do
      count := count + (n / i)
   done
   return count;
end

উদাহরণ

#include <iostream>
#include <cmath>
#define MAX 20
using namespace std;
int countTrailingZeros(int n) {
   int count = 0;
   for (int i = 5; n / i >= 1; i *= 5)
      count += n / i;
   return count;
}
main() {
   int n = 20;
   cout << "Number of trailing zeros: " << countTrailingZeros(n);
}

আউটপুট

Number of trailing zeros: 4

  1. ত্রিভুজাকার ম্যাচস্টিক নম্বরের জন্য C/C++ প্রোগ্রাম?

  2. মডুলার সমীকরণের সমাধানের সংখ্যার জন্য C/C++ প্রোগ্রাম?

  3. মডুলার সমীকরণের সমাধানের সংখ্যার জন্য C/C++ প্রোগ্রাম?

  4. nম কাতালান নম্বরের জন্য C/C++ প্রোগ্রাম?