मान लीजिए कि हमारे पास दो मान k और n हैं। पहले n प्राकृत संख्याओं 1, 2, ..., n के यादृच्छिक क्रमपरिवर्तन मान लीजिए p1, p2, ..., pn पर विचार करें और F का मान इस प्रकार परिकलित करें कि F =(X2+...+Xn-1)k , जहां Xi एक संकेतक यादृच्छिक चर है, जो 1 है जब निम्नलिखित दो स्थितियों में से एक होता है:pi-1
इसलिए, यदि इनपुट 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 वापसी
- मुख्य विधि से, निम्न कार्य करें -
- एम:=n-2
- p :=2.0/3
- q :=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