मान लीजिए कि हमारे पास एक संख्या n है, हमें निम्नलिखित नियमों का उपयोग करके लंबाई n के तारों की संख्या ज्ञात करनी होगी -
-
प्रत्येक वर्ण एक लोअर केस स्वर है [a, e, i, o, u]
-
"a" के बाद केवल एक "e" हो सकता है
-
"e" के बाद केवल "a" और "i" में से कोई भी हो सकता है
-
"i" के बाद दूसरा "i" नहीं हो सकता है
-
"o" के बाद केवल "i" और "u" में से कोई भी हो सकता है
-
"u" के बाद केवल एक "a" हो सकता है
यदि परिणाम बहुत बड़ा है, तो परिणाम को 10^9 + 7 से संशोधित करें।
इसलिए, यदि इनपुट n =2 जैसा है, तो आउटपुट 10 होगा, क्योंकि हम निम्नलिखित दो अक्षर स्ट्रिंग्स उत्पन्न कर सकते हैं:["ae", "ea", "ei", "ia", "ie", " io", "iu", "oi", "ou", "ua"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मी =10^9 + 7
-
अगर n 0 के समान है, तो
-
वापसी 0
-
-
पांच चर परिभाषित करें a, e, i, o, u, सभी प्रारंभ में 1 हैं
-
_ के लिए 0 से n-1 की सीमा में, करें
-
ए:=ई+आई+यू
-
ई:=ए+आई
-
मैं :=ई+ओ
-
ओ:=मैं
-
आप :=मैं+ओ
-
-
-
वापसी (ए + ई + आई + ओ + यू) मॉड एम
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, n): m = (10 ** 9 + 7) if n == 0: return 0 a = e = i = o = u = 1 for _ in range(n-1): a, e, i, o, u = e+i+u, a+i, e+o, i, i+o return (a + e + i + o + u) % m ob = Solution() print(ob.solve(3))
इनपुट
3
आउटपुट
19