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

সি++-এ অয়লারিয়ান নম্বর


গণিতে, অয়লারিয়ান নম্বর হলো একটি বিশেষ ধরনের কম্বিনেশন নম্বর। এটি সেই পারমুটেশনগুলোর সংখ্যা নির্ধারণ করে যেখানে পরবর্তী উপাদান পূর্ববর্তী উপাদানের থেকে একটি নির্দিষ্ট সংখ্যা বড়।

নির্দেশিত হিসেবে,

A(n, m) হলো ১ থেকে n পর্যন্ত পারমুটেশন যেখানে দুটি সংখ্যার পার্থক্য m।

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

উদাহরণ দিয়ে বুঝি

ইনপুট: n = 4, m = 2

আউটপুট: ১১

ব্যাখ্যা:

১ থেকে ৪ পর্যন্ত সংখ্যাগুলোর সব পারমুটেশন:

১ ২ ৩ ৪      ১ ২ ৪ ৩      ১ ৩ ২ ৪      ১ ৩ ৪ ২      ১ ৪ ২ ৩      ১ ৪ ৩ ২
২ ১ ৩ ৪      ২ ১ ৪ ৩      ২ ৩ ১ ৪      ২ ৩ ৪ ১      ২ ৪ ১ ৩      ২ ৪ ৩ ১
৩ ১ ২ ৪      ৩ ১ ৪ ২      ৩ ২ ১ ৪      ৩ ২ ৪ ১      ৩ ৪ ১ ২      ৩ ৪ ২ ১
৪ ১ ২ ৩      ৪ ১ ৩ ২      ৪ ২ ১ ৩      ৪ ২ ৩ ১      ৪ ৩ ১ ২      ৪ ৩ ২ ১

এই সব পারমুটেশনের মধ্যে ১১টি পারমুটেশনে দুটি সংখ্যার পার্থক্য m।

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

পারমুটেশনের সংখ্যা বের করতে আমরা অয়লারিয়ান নম্বরের সূত্র ব্যবহার করব:

A(n, m) = 0, যদি m > n বা n = 0
       A(n, m) = 1, যদি m = 0
       A(n, m) = (n-m)A(n-1, m-1) + (m+1)A(n-1, m)

সমাধান minhaj করার প্রোগ্রাম

#include <iostream> 
using namespace std; 

int countEulerianNumber(int n, int m) { 
    if (m >= n || n == 0) 
        return 0; 
    if (m == 0) 
        return 1; 
    return ( ( (n - m) * countEulerianNumber(n - 1, m - 1) ) + ( (m + 1) * countEulerianNumber(n - 1, m) ) ); 
} 

int main() { 
    int n = 5, m = 3; 
    cout << "The number of Eulerian permutations is " << countEulerianNumber(n, m); 
    return 0; 
}

আউটপুট

The number of Eulerian permutations is 26
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. সি++-এ নাম্বার অফ এনক্লেভস (Number of Enclaves)

  4. C++-এ অ্যাডাম সংখ্যা (Adam Number) চেক করার পদ্ধতি