解题思路核心在于逐位独立计算贡献每个数位上的数字都独立地从 [l, r] 中选取。· 总数字个数共有 n r - l 1 个可选数字因此 k 位数字的总数为 n^k。· 单个数位贡献固定一个数位其余 k-1 位可任意选择共有 n^(k-1) 种组合。该数位上所有数字之和为 (lr) * n / 2。· 数位权值总和所有 k 个数位的权值1, 10, ..., 10^(k-1)之和即等比数列和 (10^k - 1) / 9。最终公式为答案 (数位和) × n^(k-1) × (1 10 ... 10^(k-1))其中数位和 (l r) * n / 2。---Rust 实现rustconst MOD: i64 1_000_000_007;impl Solution {pub fn sum_of_numbers(l: i32, r: i32, k: i32) - i32 {let l l as i64;let r r as i64;let k k as i64;let n r - l 1; // 可选数字个数let digit_sum (l r) * n / 2; // 单个数位上的数字和// term1 digit_sum * n^(k-1) % MODlet term1 (digit_sum % MOD) * Self::mod_pow(n, k - 1) % MOD;// term2 (10^k - 1) / 9 % MOD使用费马小定理计算 9 的逆元let pow10 Self::mod_pow(10, k);let inv9 Self::mod_pow(9, MOD - 2);let term2 (pow10 - 1 MOD) % MOD * inv9 % MOD;((term1 * term2) % MOD) as i32}// 快速幂计算 a^b % MODfn mod_pow(mut a: i64, mut b: i64) - i64 {let mut result 1;a % MOD;while b 0 {if b 1 1 {result (result * a) % MOD;}a (a * a) % MOD;b 1;}result}}复杂度分析· 时间复杂度O(log k)主要来自快速幂运算mod_pow。· 空间复杂度O(1)。