1922. Count Good Numbers
Problem Statement
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 (2and8) at even positions are even and the digits (5and2) at odd positions are prime. However,"3245"is not good because3is 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: 400Example 3:
Input: n = 50
Output: 564908303
Constraints:
1 <= n <= 1015
Intuition
Approach:
We just have to find pow(n,x) in recursion
So we employ this trick
2^5 = 2^(2*2+1) = (2^2)^2 * 2 here, half is 2^2 now and since 5 is odd extra multiply
Go for 2^2 now Links
https://leetcode.com/problems/count-good-numbers/description/
Video Links
Approach 1:
class Solution {
public:
long mod=1e9+7;
int countGoodNumbers(long n) {
long even=(n+1)/2;
long odd=n/2;
return (int)(pow(5,even)*pow(4,odd)%mod);
}
long pow(long x,long n){
if(n==0){
return 1;
}
long half=pow(x,n/2);
if(n%2==0){
return (half*half)%mod;
}
return (half*half*x)%mod;
}
};Approach 2:
Approach 3:
Approach 4:
Similar Problems
Last updated