मान लीजिए कि हमारे पास 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