ইনপুট হিসাবে একটি পূর্ণসংখ্যা সংখ্যা দেওয়া. লক্ষ্য হল সেই সংখ্যার জন্য গণনা করা ফ্যাক্টরিয়ালের পিছনের শূন্যের সংখ্যা খুঁজে বের করা। একটি সংখ্যা N এর ফ্যাক্টরিয়াল হল [1, N] পরিসরের সমস্ত সংখ্যার গুণফল।
আমরা জানি যে সংখ্যাটি 10 এর একাধিক হলে বা একটি ফ্যাক্টর পেয়ার (2,5) থাকলেই আমরা একটি ট্রেলিং শূন্য পাই। 5-এর বেশি যেকোন সংখ্যার সমস্ত ফ্যাক্টরিয়ালে, সেই সংখ্যার মৌলিক গুণনীয়ককরণে আমাদের কাছে 5s-এর থেকে 2s বেশি সংখ্যা রয়েছে। একটি সংখ্যাকে 5 এর ঘাত দ্বারা ভাগ করলে আমরা এর গুণনীয়কগুলিতে 5s গণনা করব। সুতরাং, 5s এর সংখ্যা আমাদেরকে পরবর্তী শূন্যের সংখ্যা বলে দেবে।
উদাহরণস্বরূপ
ইনপুট
number=6
আউটপুট
Count of trailing zeros in factorial of a number are: 1
ব্যাখ্যা
The factorial is 30. Prime factors of 30 : 2 * 3 * 5 So only one pair of (2,5) exists so trailing zeros is 1.
ইনপুট
number=12
আউটপুট
Count of trailing zeros in factorial of a number are: 2
ব্যাখ্যা
The factorial is 479001600. Prime factors of 479001600 : 210 x 35 x 52 x 71 x 111 So we can get 2 pairs of (2,5) so trailing zeros are 2
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি −
এই পদ্ধতিতে আমরা সংখ্যাটিকে 5 এর ঘাত দ্বারা ভাগ করব। যদি এটি 1 এর বেশি ফলাফল করে তাহলে অনুগামী শূন্যের সংখ্যাটি 5s এর সংখ্যা হবে। গণনা করতে এটি যোগ করুন।
-
ইনপুট হিসাবে একটি পূর্ণসংখ্যা নিন।
-
ফাংশন trailing_zeros(int number) সংখ্যা গ্রহণ করে এবং সংখ্যার ফ্যাক্টরিয়ালের মধ্যে অনুগামী শূন্যের গণনা প্রদান করে।
-
0 হিসাবে প্রাথমিক গণনা নিন।
-
একটি লুপ ব্যবহার করে, সংখ্যাটিকে 5 এর ক্ষমতা দিয়ে ভাগ করুন।
-
যদি সংখ্যা/i 1-এর বেশি হয়, তাহলে গণনার জন্য এই মানটি যোগ করুন।
-
লুপের শেষে ফলাফল হিসাবে গণনা করুন।
উদাহরণ
#include <iostream> using namespace std; int trailing_zeros(int number){ int count = 0; for (int i = 5; number / i >= 1; i *= 5){ int temp = number / i; count = count + temp; } return count; } int main(){ int number = 50; cout<<"Count of trailing zeros in factorial of a number are: "<<trailing_zeros(number); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of trailing zeros in factorial of a number are: 12