ধরা যাক একটি সংখ্যা 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, 1, 1, 1, 1
- n-1 বার লুপ: a, e, i, o, u = e+i+u, a+i, e+o, i, i+o
- (a + e + i + o + u) % 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