aboutsummaryrefslogtreecommitdiff
path: root/count_good_numbers.py
blob: 93455c9a63e10fcdf388cf3f2d614d482c3b58a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 1922. Count Good Numbers

"""
a digit string is good if the digits (0-indexed) at even indices are even and
the digits at odd indices are prime (2,3,5,or 7). for example 2582 is good
because the digits 2 and 8 at even positions are even and the digits 5 and 2
at odd positions are prime. however, 3245 is not good because 3 is at an even
index, but is not even. given an integer 'n', return the total number of good
digit strings of length 'n'. since the answer may be large, return it modulo
1e9+7. a digit string is a string consisting of digits 0 through 9 that may
contain leading zeros.
"""


class Solution(object):
    def countGoodNumbers(self, n):
        """
        :type n: int
        :rtype: int
        """
        cnt, x = 5 ** (n % 2), 20
        for _ in range(n // 2):
            cnt = cnt * x % (10**9 + 7)
        return cnt


if __name__ == "__main__":
    obj = Solution()
    print(obj.countGoodNumbers(1))
    print(obj.countGoodNumbers(4))
    print(obj.countGoodNumbers(50))