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
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
).
- 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
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
Post a Comment