मान लीजिए कि हमारे पास m अक्षरों की संख्या है और दूसरा मान n है। हमें इन m अक्षरों से अक्षरों के साथ बनाए गए n लंबाई के तारों की संख्या गिननी है, और स्ट्रिंग में 1 से अधिक लंबाई की कोई पैलिंड्रोमिक विकल्प नहीं है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9+7 से संशोधित करें। पी>
इसलिए, यदि इनपुट n =2 m =3 जैसा है, तो आउटपुट 6 होगा क्योंकि m =3, इसलिए यदि अक्षर {x, y, z} हैं, तो हम स्ट्रिंग उत्पन्न कर सकते हैं जैसे:[xx,xy,xz ,yx,yy,yz,zx,zy,zz] लेकिन [xx,yy,zz] मान्य नहीं हैं इसलिए 6 तार हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- p :=10^9+7
- यदि n 1 के समान है, तो
- रिटर्न एम मॉड पी
- यदि n 2 के समान है, तो
- वापसी एम *(एम -1) मॉड पी
- यदि मी <=2, तो
- वापसी 0
- वापसी m*(m-1) * ((m-2)^(n-2) mod p) mod p
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n, m): p = 10**9+7 if n == 1: return m % p if n == 2: return m * (m - 1) % p if m <= 2: return 0 return m * (m - 1) * pow(m - 2, n - 2, p) % p n = 2 m = 3 print(solve(n, m))
इनपुट
3, [1,2,3,4,1]
आउटपुट
6