একটি সংখ্যা n দেওয়া আছে। x = rand() mod n যেখানে rand() ০ থেকে ১০¹⁰⁰ পর্যন্ত একইভাবে র্যান্ডম ইন্টিজার জেনারেট করে।
Y = √(x + √(x + √(x + ...))) — এই Y-এর আশাবেদী মান বের করুন। n এর রেঞ্জ: ১ থেকে ৫×১০⁶।
উদাহরণ
n = 5 → আউটপুট: 1.69647248786
এলগরিদম
- প্রি-কম্পিউটেড প্রিফিক্স সাম
prefব্যবহার করুন (৫×১০⁶ পর্যন্ত)। pref[i] = pref[i-1] + 0.5*(1 + √(4i+1))- যদি
n < 5×10⁶: রিটার্নpref[n-1]/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)) # আউটপুট: 1.69647248786
ইনপুট / আউটপুট
5 1.69647248786