मान लीजिए कि हमारे पास एम अलग-अलग अभिव्यक्तियां हैं, और इन अभिव्यक्तियों के उत्तर 1 से एन (दोनों समावेशी) में हैं, तो एक्स =अधिकतम (एफ (आई)) पर विचार करें, प्रत्येक i के लिए रेंज 1 से एन तक, हमें अपेक्षित मूल्य खोजना होगा एक्स का।
इसलिए, यदि इनपुट M =3, N =3 जैसा है, तो आउटपुट 2.2 होगा, क्योंकि
| अनुक्रम | अधिकतम आवृत्ति |
|---|---|
| 111 | 3 |
| 112 | 2 |
| 113 | 2 |
| 122 | 2 |
| 123 | 1 |
| 133 | 1 |
| 222 | 3 |
| 223 | 2 |
| 233 | 2 |
| 333 | 3 |
$$E(x) =\sum P(x) * x =P(1) + 2P(2) + 3P(3) =\frac{1}{10} + 2 * \frac{6}{10} + 3 * \frac{3}{10} =\frac{22}{10}$$
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- संयोजन :=एक नया नक्शा
- एक फ़ंक्शन को परिभाषित करें nCr() । इसमें n, k_in लगेगा
- k :=न्यूनतम k_in और (n - k_in)
- यदि n
- वापसी 0
- वापसी संयोजन[n, k]
- वापसी 1
- वापसी 1
- a :=1
- 0 से k-1 की सीमा में cnt के लिए
- a :=a * (n - cnt)
- a :=a/(cnt + 1) का तल
- संयोजन[n, cnt + 1] :=a
- एक वापसी
- a :=1
- s :=0
- मैं के लिए 0 से एम/के + 2 की मंजिल तक, करते हैं
- यदि M
- लूप से बाहर आएं
- यदि M
- s :=s + a * nCr(N, i) * nCr(N-1+M-i*k, M-i*k)
- a :=-a
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
combination = {}
def nCr(n, k_in):
k = min(k_in, n - k_in)
if n < k or k < 0:
return 0
elif (n, k) in combination:
return combination[(n, k)]
elif k == 0:
return 1
elif n == k:
return 1
else:
a = 1
for cnt in range(k):
a *= (n - cnt)
a //= (cnt + 1)
combination[(n, cnt + 1)] = a
return a
def solve(M, N):
arr = []
for k in range(2, M + 2):
a = 1
s = 0
for i in range(M // k + 2):
if (M < i * k):
break
s += a * nCr(N, i) * nCr(N - 1 + M - i * k, M - i * k)
a *= -1
arr.append(s)
total = arr[-1]
diff = [arr[0]] + [arr[cnt + 1] - arr[cnt] for cnt in range(M - 1)]
output = sum(diff[cnt] * (cnt + 1) / total for cnt in range(M))
return output
M = 3
N = 3
print(solve(M, N)) इनपुट
3, 3
आउटपुट
1