[LeetCode] Count Good Numbers

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 109 + 7.

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

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
const int mod = 1e9 + 7;
long modPow(int n, long long x){
if (!x) return 1;
long p = modPow(n, x>>1);
return ((p * p) % mod) * (x & 1 ? n : 1) % mod;
}
public:
int countGoodNumbers(long long n) {
return modPow(20, n>>1) * (n & 1 ? 5 : 1) % mod;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/01/19/PS/LeetCode/count-good-numbers/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.