Skip to content

Commit 1000ad2

Browse files
authored
Create number-of-distinct-roll-sequences.py
1 parent 298b2dc commit 1000ad2

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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

0 commit comments

Comments
 (0)