मान लीजिए हमारे पास दो मान n और m हैं। हमें क्रम n x m के विनम्र आव्यूहों की संभावित व्यवस्थाओं की संख्या ज्ञात करनी है। मैट्रिक्स को विनम्र कहा जाता है जब
- इसमें प्रत्येक तत्व 1 से n x m की श्रेणी में बिल्कुल एक बार होता है
- किन्हीं दो सूचकांक जोड़े (i1, j1) और (i2, j2) के लिए, यदि (i1 + j1) <(i2 + j2), तो Mat[i1, j1]
अगर उत्तर बहुत बड़ा है तो परिणाम मोड 10^9 + 7 लौटाएं।
इसलिए, यदि इनपुट n =2 m =2 जैसा है, तो आउटपुट 2 होगा, क्योंकि दो संभावित मैट्रिक्स हैं -
1 | 2 |
3 | 4 |
और
1 | 3 |
2 | 4 |
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- p :=10^9+7
- परिणाम :=1 मान वाली एक सूची
- x के लिए 2 से 10^6 की सीमा में, करें
- अस्थायी:=परिणाम का अंतिम तत्व
- अस्थायी:=(temp*x) मॉड पी
- परिणाम के अंत में अस्थायी डालें
- अगर एम> एन, तो
- अस्थायी:=n
- n :=मी
- एम :=अस्थायी
- उत्पाद :=1
- x के लिए 1 से m की सीमा में, करें
- उत्पाद :=(उत्पाद * परिणाम[x-1]) मॉड p
- उत्पाद :=(उत्पाद^2) मॉड पी
- x के लिए 0 से n - m की सीमा में, करें
- उत्पाद:=(उत्पाद * परिणाम[एम-1]) मॉड पी
- उत्पाद लौटाएं
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
p = 10**9+7 def solve(n, m): result = [1] for x in range(2,10**6+1): temp = result[-1] temp = (temp*x) % p result.append(temp) if(m > n): temp = n n = m m = temp prod = 1 for x in range(1,m): prod = (prod * result[x-1]) % p prod = (prod**2) % p for x in range(n-m+1): prod = (prod*result[m-1]) % p return prod n = 3 m = 3 print(solve(n, m))
इनपुट
3, 3
आउटपुट
24