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

C++ দিয়ে বেস ১৬-এ N!-এর শেষ শূন্যের সংখ্যা বের করা

এই আর্টিকেলে আমরা বুঝব কিভাবে একটি দিয়ে হয়ে সংখ্যা N-এর ফ্যাক্টোরিয়ালকে বেস ১৬-এ রিপ্রেজেন্ট করলে তার শেষে কতগুলো শূন্য থাকে। উদাহরণ −

ইনপুট: N = 7 আউটপুট: 1 ব্যাখ্যা: fact(7) = 5040 (বেস ১০) এবং 13B0 (বেস ১৬) যাতে ১টি শেষ শূন্য।
ইনপুট: N = 11 আউটপুট: 2 ব্যাখ্যা: fact(11) = 39916800 (বেস ১০) এবং 2611500 (বেস ১৬) যাতে ২টি শেষ শূন্য।

প্রথমে যেকোনো ডেসিমাল সংখ্যাকে একটি বেস থেকে অন্য বেসে কনভার্ট করার প্রক্রিয়া জানি। উদাহরণস্বরূপ (5040)₁₀ কে (?)₁₆-তে কনভার্ট করা।

C++ দিয়ে বেস ১৬-এ N!-এর শেষ শূন্যের সংখ্যা বের করা

অর্থাৎ সংখ্যাকে ১৬ দিয়ে ভাগ করে ভাগশেষ রাখা যতক্ষণ না সংখ্যা আর ভাগ করা যায় না। ফলাফল হবে ভাগশেষগুলো উল্টা ক্রমে।

ফলাফলে আমরা ১টি শেষ শূন্য পাই, যা ১৬ দিয়ে ভাগ দিয়ে ভাগশেষ ০ পাওয়ায় হয়েছে। ৫০৪০-এর প্রাইম ফ্যাক্টরাইজেশন = 16¹ × 451 × 7¹, অর্থাৎ ১৬ তার ১ বার ভাগ করতে পেরেছে ভাগশেষ ০ দিয়ে, যা শেষ শূন্যের সংখ্যার সমান। এইভাবে আমরা শেষ শূন্যের সংখ্যা বের করতে পারি।

সমাধানের পদ্ধতি

উপরে আমরা শেষ শূন্যের সংখ্যা বের করার পদ্ধতি আলোচনা করেছি। আমরা জানি ১৬ = ২⁴, অর্থাৎ N-এ ২-এর সর্বোচ্চ ঘাতকে ৪ দিয়ে ভাগ করলে ১৬-এর সর্বোচ্চ ঘাত পাওয়া যাবে। এটিও লেজান্ড্রের সূত্র (Legendre's formula) নামে পরিচিত।

উপরোক্ত পদ্ধতির C++ কোড

নিচে দিয়ে गयी C++ সিনট্যাক্স ব্যবহার করে এই সমস্যা সমাধান করা যায় −

উদাহরণ
#include <bits/stdc++.h> using namespace std; int main () {     int n = 11;     long long int count = 0;     long long int value, power = 2;     long long int result;     do {       value = n / power;       count += value;       power *= 2;     } while (value != 0);     // count-এ ২-এর সর্বোচ্চ ঘাত আছে     result = count / 4;     cout << "Number of trailing zeroes in base 16 representation of N : " << result; }
আউটপুট
Number of trailing zeroes in base 16 representation of N: 2
কোডের ব্যাখ্যা
  • power কে ২ দিয়ে ইনিশিয়ালাইজ করা হয়েছে কারণ আমাদের ২-এর সর্বোচ্চ ঘাত বের করতে হবে।
  • লেজান্ড্রের সূত্র একটি while লুপে ইমপ্লিমেন্ট করা হয়েছে: n কে power (শুরুতে ২) দিয়ে ভাগ করে count বাড়ানো হয়েছে এবং power ২ দিয়ে গুণ করা হয়েছে।
  • ২-এর সর্বোচ্চ ঘাত (count-এ সংরক্ষিত) কে ৪ দিয়ে ভাগ করা হয়েছে।
  • শেষে ফলাফল প্রিন্ট করা হয়েছে।
উপসংহার

এই আর্টিকেলে আমরা বেস ১৬-এ ফ্যাক্টোরিয়াল N-এর শেষ শূন্যের সংখ্যা বের করার সমস্যা সমাধান করেছি লেজান্ড্রের সূত্র ব্যবহার করে। আমরা C++ কোডও লিখেছি। এই কোড Java, C, Python ইত্যাদি ভাষায়ও লিখা যায়। আশা করি আপনি এই আর্টিকেলটি সহায়ক পাবেন।

  1. C++ দিয়ে B বেসে N!-এর末尾 শূন্যের সংখ্যা বের করা

  2. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  4. C++-এ সেটে রিফ্লেক্সিভ রিলেশন সংখ্যা বের করুন