← All problems

1922. Count Good Numbers

MediumOpen on LeetCodeProblem statement

Problem Statement

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 (2, 3, 5, or 7).

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.

A 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:

Java

Source file
class Solution {
    int MOD = 1_000_000_007;

    public int countGoodNumbers(long n) {
        long oddPosns = n / 2;
        long evenPosns = (n & 1) == 1 ? oddPosns + 1 : oddPosns;
        return (int) ((moduloPower(5, evenPosns) * moduloPower(4, oddPosns)) % MOD);
    }

    private long moduloPower(int base, long exp) {
        long res = 1;
        while (exp-- > 0)
            res = (res * base) % MOD;
        return res;
    }
}