2025-04-13 Daily Challenge
Today I have done leetcode's April LeetCoding Challenge with cpp
.
April LeetCoding Challenge 13
Description
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
and8
) at even positions are even and the digits (5
and2
) at odd positions are prime. However,"3245"
is not good because3
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.
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
Solution
inline long long qpow(long long base, long long exp, long long mod) {
long long result = 1;
while(exp) {
if(exp & 1) {
result *= base;
result %= mod;
}
base *= base;
base %= mod;
exp >>= 1;
}
return result;
}
class Solution {
const int MOD = 1e9 + 7;
public:
int countGoodNumbers(long long n) {
return qpow(5, (1 + n) / 2, MOD) * qpow(4, n / 2, MOD) % MOD;
}
};
// Accepted
// 166/166 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 69.99 % of cpp submissions (7.9 MB)