আমার স্থানীয় এসিএম অধ্যায় সভাগুলিতে আগত লোকদের দ্বারস্থ পুরষ্কার দেয়। আপনি যদি প্রোগ্রামিং ধাঁধাটি সমাধান করেন তবে আপনি জয়ের আরও বর্ধিত সুযোগ পাবেন (তবে আমি সর্বদা সেই ধাঁধাটি সমাধান করি)। এইভাবে, কিছু লোকের 1 টি প্রবেশ রয়েছে, আবার অন্যদের 2 রয়েছে But তবে অপেক্ষা করুন! রাফেল প্রোগ্রামটি যেভাবে কাজ করে তা অন্য ধাঁধাটি সমাধান করার সময় অন্য এন্ট্রি যুক্ত করে নয়। পরিবর্তে, এটি কোনও ব্যক্তির "জীবন" সংখ্যাটি ট্র্যাক করে রাখে, হ্রাস করে যে যদি সেই ব্যক্তিকে প্রতিটি পাসে এলোমেলো নমুনা অ্যালগরিদম বেছে নেওয়া হয়। সুতরাং এটি এর মতো কাজ করে:
Doorknob: 1. xnor: 2. Justin: 2. Alex: 1. Dennis: 2.
তারপরে প্রোগ্রামটি এলোমেলোভাবে একটি বেছে নেয় [Doorknob, xnor, Justin, Alex, Dennis]
, সংখ্যা হ্রাস করে (বলুন এটি চয়ন করুন Justin
):
Doorknob: 1. xnor: 2. Justin: 1. Alex: 1. Dennis: 2.
এবং পুনরাবৃত্তি। যদি কারও "জীবন" এর সংখ্যা যায় 0
(আসুন Justin
আবার চয়ন করুন ), সেগুলি তালিকা থেকে সরানো হবে:
Doorknob: 1. xnor: 2. Alex: 1. Dennis: 2.
এটি অব্যাহত থাকে যতক্ষণ না একজন ব্যক্তি রয়ে যায়; যে ব্যক্তি বিজয়ী হয়।
এখন আসল প্রশ্নটি হ'ল, আমি কীভাবে জিতে যেতাম সম্ভাবনা?
আপনাকে দুটি ইনপুট দেওয়া হবে:
n
। এটি চ্যালেঞ্জে প্রবেশ করা লোকের সংখ্যাk
। এটি এমন লোকের সংখ্যা (যাদের মধ্যেn
) 2 জন জীবন রয়েছে। এই সংখ্যাটি সর্বদা আপনাকে অন্তর্ভুক্ত করে।
সুতরাং আমার যদি কোনও ফাংশন থাকে p
এবং ডেকে আনা হয় p(10, 5)
তবে পুরষ্কার জয়ের সম্ভাবনা এটিই হবে যেখানে সেখানে 10 জন লোক রয়েছেন যার মধ্যে 5 টির মধ্যে কেবল 1 জন জীবন রয়েছে, যেখানে 5 (আপনার সহ) 2 জন জীবন পান।
আপনি জিতে যাওয়ার সম্ভাবনাটি হুবহু দশমিক হিসাবে আউটপুট করে প্রত্যাশিত। যে কোনও হারে, উত্তরগুলি অবশ্যই দশমিক পয়েন্টের পরে 4 ম দশমিক স্থান সহ সঠিক হতে হবে । আপনি কি সেই অঙ্কটি গোল করেন না তা আপনার উপর নির্ভর করে।
আপনার সমাধানটি এলোমেলোভাবে সমাধান হতে পারে যা উচ্চ সম্ভাবনার সাথে 4 র্থ দশমিক স্থানে উত্তর দেয় । আপনি ধরে নিতে পারেন যে আপনি যে আরএনজি ব্যবহার করেছেন তা সত্যই এলোমেলো এবং এর জন্য কমপক্ষে 90% সম্ভাব্যতা সহ সঠিক উত্তরটি আউটপুট করতে হবে।
তদ্ব্যতীত, আপনার n, k <= 1000
কোডটির জন্য কেবলমাত্র কাজ করা দরকার , যদিও আমি আগ্রহীদের জন্য এর চেয়ে বড় পরীক্ষার কেস সরবরাহ করেছিলাম।
পরীক্ষার কেস
দ্রষ্টব্য: এর কয়েকটি সাধারণ সূত্র।
n, k | output
----------+---------
1, 1 | 1
2, 2 | 0.5
2, 1 | 0.75
3, 1 | 11/18 = 0.611111111
1000, 1 | 0.007485470860550352
4, 3 | 0.3052662037037037
k, k | 1/k
n, 1 | (EulerGamma + PolyGamma[1 + n])/n (* Mathematica code *)
| (γ + ψ(1 + n))/n
10, 6 | 0.14424629234373537
300, 100 | 0.007871966408910648
500, 200 | 0.004218184180294532
1000, 500 | 0.0018008560286627948
---------------------------------- Extra (not needed to be a valid answer)
5000, 601 | 0.0009518052922680399
5000, 901 | 0.0007632938197806958
আরও কয়েকটি চেকের জন্য, p(n, 1) * n
নিম্নলিখিত হিসাবে নিন:
n | output
------+---------
1 | 1
2 | 1.5
3 | 1.8333333333333335
10 | 2.928968253968254
100 | 5.1873775176396215
-------------------------- Extra (not needed to be a valid answer)
100000| 12.090146129863305
k
এক দ্বারা বন্ধ হয়ে গেছে)