ধরা যাক n জন শিশু একটি সার্কেলে দাঁড়িয়ে আছে এবং ব্যালুন পাওয়ার জন্য অপেক্ষা করছে। বিতরণ k-তম শিশু থেকে শুরু হবে (প্রথম শিশুর সূচক ০), এবং যেন ব্যালুন পেলে সে সার্কেল ছাড়ে যাবে। এখন প্রতি k-তম শিশুকে ঘড়ির কাঁটায় ঘুরন দিয়ে ব্যালুন দেওয়া হবে যতক্ষণ না একমাত্র শিশু বাঞ্চায় যাবে যাকে শেষ ব্যালুনটি দেওয়া হবে। n এবং k দিয়ে শেষ ব্যালুন পাওয়া শিশুর সূচক বের করতে হবে।
উদাহরণ
ইনপুট: n = 3, k = 2
আউটপুট: 1
ব্যাখ্যা: প্রথম রাউন্ডে শিশু ২ ব্যালুন পেয়ে চলে যায়, সার্কেল থাকে [0, 1]। দ্বিতীয় রাউন্ডে শিশু ০ ব্যালুন পায়, সার্কেল থাকে [1]।
সমাধানের ধাপসমূহ
arr := 0 থেকে n-1 পর্য্ত সংখ্যাগুলোর একটি লিস্টinit := 0arr-এর দৈর্ঘ্য ১-র বেশি থাকা পর্যন্ত:remove := (init + k) % len(arr)del arr[remove]init := remove
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