मान लीजिए हमें कई बार nCr मानों की गणना करनी है। हम इसे बहुत ही कुशल तरीके से हल कर सकते हैं। यदि हम nCr के निम्न मान संग्रहीत करते हैं तो हम आसानी से उच्च मान प्राप्त कर सकते हैं। तो अगर हमारे पास n है, तो हमें nC0 से nCn की सूची ढूंढनी होगी। अगर उत्तर बहुत बड़ा है तो उस मॉड्यूलो 10^9 को वापस कर दें।
इसलिए, यदि इनपुट n =6 जैसा है, तो आउटपुट [1, 6, 15, 20, 15, 6, 1] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- आइटम:=एकल तत्व 1 के साथ एक सूची
- r श्रेणी 1 से n के लिए, करें
- आइटम के अंत में (आइटम का अंतिम तत्व * (n-r+1) /r) का फर्श डालें
- आइटम[n-2] :=items[n-2] mod 10^9 जहां n आइटम का आकार है
- आइटम लौटाएं
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n): items = [1] for r in range(1,n+1): items.append(items[-1]*(n-r+1)//r) items[-2] %= 10**9 return items n = 6 print(solve(n))
इनपुट
6
आउटपुट
[1, 6, 15, 20, 15, 6, 1]