type
status
date
slug
summary
tags
category
icon
password
创建时间
Dec 14, 2024 03:00 AM
我们称一个数字字符串是 好数字 当它满足(下标从 0 开始)偶数 下标处的数字为 偶数 且 奇数 下标处的数字为 质数 (
2
,3
,5
或 7
)。- 比方说,
"2582"
是好数字,因为偶数下标处的数字(2
和8
)是偶数且奇数下标处的数字(5
和2
)为质数。但"3245"
不是 好数字,因为3
在偶数下标处但不是偶数。
给你一个整数
n
,请你返回长度为 n
且为好数字的数字字符串 总数 。由于答案可能会很大,请你将它对 109 + 7
取余后返回 。一个 数字字符串 是每一位都由
0
到 9
组成的字符串,且可能包含前导 0 。暴力
class Solution { public: int countGoodNumbers(long long n) { const int MOD = 1e9 + 7; int ans = 1; for(long long i = 0; i < n; i++) { if(i % 2 == 0) { ans = (long long) ans * 5 % MOD; } else { ans = (long long) ans * 4 % MOD; } } return ans; } };
超出时间限制
快速幂
class Solution { public: const int MOD = 1e9 + 7; long long qmi(long long x, long long k) { long long res = 1; while(k) { if(k & 1) res = res * x % MOD; x = x * x % MOD; k >>= 1; } return res; } int countGoodNumbers(long long n) { return qmi(4, n / 2) * qmi(5, n / 2 + n % 2) % MOD;; } };
📎 参考
- 无