# 1922. Count Good Numbers
## 想法
每個奇數下標有4種可能,偶數下標有5種可能,每個下標互不影響,所以可以使用乘法原理
1 -> 1個偶數
2 -> 1奇1偶
3 -> 1奇2偶
...
n -> floor(n/2)奇ceil(n/2)偶, n is odd
n -> n/2奇n/2偶, n is even
## 演算法
```
1. 當n是奇數時,回傳4^floor(n/2)*5^ceil(n/2)
2. 回傳4^(n/2)*5^(n/2)
```
## 程式碼
```cpp=
#define mod 1000000007
class Solution {
public:
int exp(int a, int b) {
if (b == 0) return 1;
if (b % 2) return exp(a, b - 1) * a % mod;
int tmp = exp(a, b / 2);
return (long long) tmp * tmp % mod;
}
int countGoodNumbers(long long n) {
if (n % 2) return exp(4, n / 2) * exp(5, n / 2 + 1) % mod;
return exp(4, n / 2) * exp(5, n / 2) % mod;
}
};
```