Program to count number of ways we can fill 3 x n box with 2 x 1 dominos in Python


Suppose we have a number n, we have to find the number of ways we can fill a (3 x n) block with 1 x 2 dominos. We can rotate the dominos when required. If the answer is very large then return this mod 10^9 + 7.

So, if the input is like n = 4, then the output will be 11.

To solve this, we will follow these steps −

  • m = 10^9 + 7
  • if n is odd, then
    • return 0
  • cs := 1, os := 0
  • for i in range 2 to n, increase by 2, do
    • cs := 3 * cs + os
    • os := 2 * cs + os
  • return cs mod m

Example (Python)

Let us see the following implementation to get better understanding −

 Live Demo

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))

Input

4

Output

11

Updated on: 12-Dec-2020

111 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements