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
Approach
C++
#include <bits/stdc++.h>using namespace std;const int mod = 1000000007;long long power(long long a, long long b){if (b == 0)return 1;long long res = power(a, b / 2) % mod;if (b & 1)return (((a * res) % mod) * res) % mod;return (res * res) % mod;}int countGoodNumbers(long long n){long long even = (n + 1) / 2;long long odd = n / 2;long long res = (power(5, even) % mod * power(4, odd) %mod) % mod;return res % mod;}int main(){long long n = 1;cout << countGoodNumbers(n) << "\n";return 0;}
No comments:
Post a Comment