ধরুন আমাদের দুটি ভ্যালু k এবং n আছে। প্রথম nটি প্রাকৃতিক সংখ্যা 1, 2, ..., n এর একটি র্যান্ডম পারমুটেশন p1, p2, ..., pn বিবেচনা করুন এবং F এর মান ক্যালকুলেট করুন, যাতে F = (X2+...+Xn-1)^k, যেখানে Xi একটি ইন্ডিকেটর র্যান্ডম ভেরিয়েবল, যা ১ হবে যখন নিচের দুটি শর্তের যেকোনো একটি মেনে চলবে: pi-1 < pi > pi+1 অথবা pi-1 > pi < pi+1 এবং অন্যথায় ০। আমাদের F-এর এক্সপেক্টেড ভ্যালু বের করতে হবে।
উদাহরণস্বরূপ, যদি ইনপুট k = 1 এবং n = 1000 হয়, তবে আউটপুট হবে 1996/3।
সমাধানের ধাপসমূহ
exp_factor()ফাংশন ডিফাইন করুন যাn, kনেবে- যদি
k == 1, তবে(2*(n-2), 3)রিটার্ন করুন - অন্যথায় যদি
k == 2, তবে(40*n^2 - 144*n + 131, 90)রিটার্ন করুন - অন্যথায় যদি
k == 3, তবে(280*n^3 - 1344*n^2 + 2063*n - 1038, 945)রিটার্ন করুন - অন্যথায় যদি
k == 4, তবে(2800*n^4 - 15680*n^3 + 28844*n^2 - 19288*n + 4263, 14175)রিটার্ন করুন - অন্যথায় যদি
k == 5, তবে(12320*n^5 - 73920*n^4 + 130328*n^3 - 29568*n^2 - 64150*n - 5124, 93555)রিটার্ন করুন 1.0রিটার্ন করুন- মেইন মেথড থেকে:
M := n-2p := 2.0/3q := 1 - p(num, den) := exp_factor(n, k)g := gcd(num, den)- ফ্র্যাকশন
(num/g) / (den/g)রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
from math import gcd
def exp_factor(n, k):
if k == 1:
return (2*(n-2), 3)
elif k == 2:
return (40*n**2 - 144*n + 131, 90)
elif k == 3:
return (280*n**3 - 1344*n**2 + 2063*n - 1038, 945)
elif k == 4:
return (2800*n**4 - 15680*n**3 + 28844*n**2 - 19288*n + 4263, 14175)
elif k == 5:
return (12320*n**5 - 73920*n**4 + 130328*n**3 - 29568*n**2 - 64150*n - 5124, 93555)
return 1.0
def solve(k, n):
M = n-2
p = 2.0/3
q = 1 - p
num, den = exp_factor(n, k)
g = gcd(num, den)
return str(int(num/g)) + '/' + str(int(den/g))
k = 1
n = 1000
print(solve(k, n))
ইনপুট
1, 1000
আউটপুট
1996/3