Modular math...

872nd problem solved: just do the modular math for this problem. Basically you'll need to do this:

5^(even positions) * 4^(odd positions)

All that mod 10^9 + 7. Code is below, hugs to everyone!!! ACC

Count Good Numbers - LeetCode

1922. Count Good Numbers
Medium

A digit string is good if the digits (0-indexed) at even indices are even and the digits at odd indices are prime (235, 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 109 + 7.

digit string is a string consisting of digits 0 through 9 that may contain leading zeros.

 

Example 1:

Input: n = 1
Output: 5
Explanation: The good numbers of length 1 are "0", "2", "4", "6", "8".

Example 2:

Input: n = 4
Output: 400

Example 3:

Input: n = 50
Output: 564908303

 

Constraints:

  • 1 <= n <= 1015

    public int CountGoodNumbers(long n)
    {
        BigInteger even = (n % 2 == 0) ? n / 2 : n / 2 + 1;
        BigInteger odd = n / 2;

        return (int)((BigInteger.ModPow(5, even, 1000000000 + 7) * BigInteger.ModPow(4, odd, 1000000000 + 7)) % (1000000000 + 7));
    }

Comments

Popular posts from this blog

Advent of Code - Day 6, 2024: BFS and FSM

Golang vs. C#: performance characteristics (simple case study)

Advent of Code - Day 7, 2024: Backtracking and Eval