ধরুন আমাদের একটি সংখ্যা n আছে, আমাদেরকে 1 x 2 ডোমিনো দিয়ে একটি (3 x n) ব্লক পূরণ করার উপায় বের করতে হবে। প্রয়োজনে আমরা ডমিনো ঘোরাতে পারি। উত্তরটি খুব বড় হলে এই মোড 10^9 + 7 ফেরত দিন।
সুতরাং, যদি ইনপুট n =4 এর মত হয়, তাহলে আউটপুট হবে 11।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- m =10^9 + 7
- যদি n বিজোড় হয়, তাহলে
- রিটার্ন 0
- cs :=1, os :=0
- 2 থেকে n রেঞ্জের i জন্য, 2 দ্বারা বাড়ান, করুন
- cs :=3 * cs + os
- os :=2 * cs + os
- সিএস মোড এম রিটার্ন করুন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution: def solve(self, n): m = (10 ** 9 + 7) if n % 2 == 1: return 0 cs = 1 os = 0 for i in range(2, n + 1, 2): cs, os = (3 * cs + os, 2 * cs + os,) return cs % m ob = Solution() n = 4 print(ob.solve(n))
ইনপুট
4
আউটপুট
11