File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Time: O(6^3 * n)
2
+ # Space: O(6^2)
3
+
4
+ import collections
5
+
6
+
7
+ # dp
8
+ class Solution (object ):
9
+ def distinctSequences (self , n ):
10
+ """
11
+ :type n: int
12
+ :rtype: int
13
+ """
14
+ def gcd (a , b ):
15
+ while b :
16
+ a , b = b , a % b
17
+ return a
18
+
19
+ if n == 1 :
20
+ return 6
21
+ MOD = 10 ** 9 + 7
22
+ dp = [[0 ]* 6 for _ in xrange (6 )]
23
+ for i in xrange (6 ):
24
+ for j in xrange (6 ):
25
+ if i != j and gcd (i + 1 , j + 1 ) == 1 :
26
+ dp [i ][j ] = 1
27
+ for _ in xrange (n - 2 ):
28
+ new_dp = [[0 ]* 6 for _ in xrange (6 )]
29
+ for i in xrange (6 ):
30
+ for j in xrange (6 ):
31
+ if not dp [i ][j ]:
32
+ continue
33
+ for k in xrange (6 ):
34
+ if not dp [j ][k ]:
35
+ continue
36
+ if k != i :
37
+ new_dp [i ][j ] = (new_dp [i ][j ]+ dp [j ][k ]) % MOD
38
+ dp = new_dp
39
+ return sum (dp [i ][j ] for i in xrange (6 ) for j in xrange (6 )) % MOD
You can’t perform that action at this time.
0 commit comments