ধরুন আমাদের একটি সংখ্যা 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"]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
m =10^9 + 7
-
যদি n 0 এর সমান হয়, তাহলে
-
রিটার্ন 0
-
-
পাঁচটি ভেরিয়েবল সংজ্ঞায়িত করুন a, e, i, o, u, সবগুলি প্রাথমিকভাবে 1
-
0 থেকে n-1 পরিসরে _ এর জন্য, করুন
-
a :=e+i+u
-
e :=a+i
-
i :=e+o
-
o :=i
-
u :=i+o
-
-
-
রিটার্ন (a + e + i + o + u) mod m
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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