কম্পিউটার

পাইথনে শেষ বেলুন প্রাপ্ত শিশুর শুরুর সূচক খুঁজে বের করার জন্য প্রোগ্রাম?


ধরুন আমাদের একটি বৃত্তে একটি শিশু দাঁড়িয়ে আছে, এবং তারা একটি বেলুন পাওয়ার জন্য অপেক্ষা করছে। বিতরণটি kth শিশু (প্রথম সূচক 0 এ) দিয়ে শুরু করা হয় এবং তাদের একটি বেলুন দিয়ে তারা বৃত্ত থেকে বেরিয়ে যায়। এখন প্রতি kth শিশু ঘড়ির কাঁটার দিকে একটি বেলুন পায় যতক্ষণ না শুধুমাত্র একটি শিশু বাকি থাকে যে একটি বেলুন পায়। তাই যদি আমাদের n এবং k থাকে, তাহলে আমাদেরকে সেই শিশুটির শুরুর সূচী খুঁজে বের করতে হবে যেটি শেষ বেলুনটি পাবে।

সুতরাং, যদি ইনপুটটি n =3 k =2 এর মত হয়, তাহলে আউটপুট হবে 1, প্রথম রাউন্ডে, শিশু 2 একটি বেলুন পায়, এবং ছেড়ে দিন তাই বৃত্তটি [0, 1] হবে। দ্বিতীয় রাউন্ডে, শিশু 0 একটি বেলুন পায়, বৃত্ত হবে [1]।

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

  • arr :=রেঞ্জ 0 থেকে n

    একটি নতুন তালিকা
  • init :=0

  • যখন arr এর সাইজ> 1, do

    • রিমুভ করুন :=(init + k) arr এর মোড সাইজ

    • মুছুন arr[সরান]

    • init :=অপসারণ করুন

  • ফেরত arr[0]

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

উদাহরণ

class Solution:
   def solve(self, n, k):
      arr = list(range(0, n))
      init = 0
      while len(arr) > 1:
         remove = (init + k) % len(arr)
         del arr[remove]
         init = remove
      return arr[0]

ob = Solution()
n = 3
k = 2
print(ob.solve(n, k))

ইনপুট

3,2

আউটপুট

1

  1. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  2. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম

  3. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম

  4. একটি বৃত্তের ক্ষেত্রফল বের করতে পাইথন প্রোগ্রাম