मान लीजिए हमारे पास एक संख्या n है। x = rand() mod n पर विचार करें, जहां rand() फंक्शन 0 और 10^100 (दोनों समावेशी) के बीच इंटीजर एकसमान रूप से यादृच्छिक रूप से उत्पन्न करता है। और
$$Y = \sqrt{x+\sqrt{x+\sqrt{x+\sqrt{x+...}}}}$$
हमें Y का अपेक्षित मान ढूंढना है। n का मान 1 और 5*10^6 की रेंज में होगा।
उदाहरण के लिए, यदि इनपुट है n = 5, तो आउटपुट होगा 1.696।
समाधान दृष्टिकोण
नेस्टेड रूट के लिए अपेक्षित मान में एक पैटर्न होता है जिसे प्रीकंप्यूट किया जा सकता है। बड़े n के लिए, एक सन्निकटन फॉर्मूला का उपयोग किया जाता है जिसमें एक स्थिर त्रुटि पद शामिल होता है।
- त्रुटि स्थिरांक
err = 2235.023971557617औरmax_n = 5 * 10^6को परिभाषित करें। max_nतक सभीnके लिए प्रीफिक्स समprefकी पूर्व-गणना करें:pref[i] = pref[i-1] + 0.5 * (1 + sqrt(4*i + 1))।- यदि
n < max_n, तोpref[n-1] / nलौटाएं। - अन्यथा, सन्निकटन फॉर्मूला का उपयोग करें:
total = (4*(n-1)+5)^1.5 / 6 - 5^1.5 / 6 - err, फिरans = 0.5 + total / (2*n)।
पायथन कार्यान्वयन
def solve(n):
err = 2235.023971557617
max_n = 5 * 10**6
pref = [0]
for i in range(1, 5 * 10**6):
pref.append(pref[-1] + (1 + (4 * i + 1)**0.5) * 0.5)
if n < max_n:
return pref[n - 1] / n
else:
total = (4 * (n - 1) + 5)**1.5 / 6 - 5**1.5 / 6 - err
ans = 0.5 + total / (2 * n)
return ans
n = 5
print(solve(n))
इनपुट
5
आउटपुट
1.69647248786