কম্পিউটার

পাইথনে টুর্নামেন্টে খেলা ম্যাচের সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা n আছে। সুতরাং একটি টুর্নামেন্টে n সংখ্যক দল রয়েছে যার কিছু নিয়ম রয়েছে −

  • যদি বর্তমানে দলের সংখ্যা সমান হয়, তাহলে প্রতিটি দল অন্য দলের সাথে একীভূত হয়। এবং মোট (n/2) ম্যাচ খেলা হয়, সেগুলো থেকে (n/2) বিজয়ী দল পরবর্তী রাউন্ডে চলে যাবে।

  • যদি দলের সংখ্যা বিজোড় হয়, তবে একটি দল এলোমেলোভাবে টুর্নামেন্টে স্থানান্তরিত হয় এবং বাকিরা একত্রিত হয়। তাই মোট (n-1)/2টি ম্যাচ খেলা হয়, এবং (n-1)/2+1 দলগুলিকে বিজয়ী হিসাবে পরবর্তী রাউন্ডে স্থানান্তরিত করা হয়৷

আমাদের খুঁজে বের করতে হবে মোট কতটি ম্যাচ খেলা হয়েছে যাতে আমরা চূড়ান্ত বিজয়ী হতে পারি।

সুতরাং, যদি ইনপুট n =10 এর মত হয়, তাহলে আউটপুট হবে 9 কারণ

  • প্রাথমিকভাবে 5-5টি বিভাগ থাকবে, তার মধ্যে 5 জন যোগ্য হবেন

  • এখন একটি দলকে খেলায় পাস করুন এবং 2-2টি দল ভাগ করুন, তাই 3টি যোগ্য হবে

  • এখন একটি দলকে খেলায় পাস করুন এবং 1-1টি দলকে ভাগ করুন, তাই 2টি যোগ্যতা অর্জন করবে

  • 1-1 ভাগ করুন এবং একজন বিজয়ী হিসাবে যোগ্য হবে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • উত্তর :=0

  • যখন n 1 এর মত নয়, করুন

    • f :=(n/2)

      এর ফ্লোর
    • অবশিষ্ট :=n মোড 2

    • ans :=ans + f

    • n :=f + অবশিষ্ট

  • উত্তর ফেরত দিন

উদাহরণ (পাইথন)

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(n):
   ans = 0
   while n != 1:
      f = n//2
      remainder = n % 2
      ans += f
      n = f + remainder

   return ans

n = 10
print(solve(n))

ইনপুট

10

আউটপুট

9

  1. পাইথনে প্রতিটি বন্ধনী গভীরতায় অক্ষরের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে n নোড সহ BST সংখ্যা গণনা করার প্রোগ্রাম

  3. পাথের সংখ্যা গণনা করার প্রোগ্রাম যার যোগফল পাইথনে k

  4. পাইথনে ম্যাট্রিক্সে বেষ্টিত দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম