news 2026/8/10 9:43:49

DeepSeek LeetCode 3855. 给定范围内 K 位数字之和 Rust实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek LeetCode 3855. 给定范围内 K 位数字之和 Rust实现

解题思路

核心在于逐位独立计算贡献:每个数位上的数字都独立地从 [l, r] 中选取。

· 总数字个数:共有 n = r - l + 1 个可选数字,因此 k 位数字的总数为 n^k。
· 单个数位贡献:固定一个数位,其余 k-1 位可任意选择,共有 n^(k-1) 种组合。该数位上所有数字之和为 (l+r) * 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 实现

```rust
const 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) % MOD
let 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 % MOD
fn 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)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 9:43:22

北滘网站建设公司哪家强?揭秘2024年本土企业官网搭建避坑指南与真实案例解析

北滘这个地方,熟悉的朋友都知道,它不仅仅是一个行政区域的名字,更是珠三角制造业的一道风景线。从小家电到机器人,从家居建材到智能设备,这里的工厂烟囱里冒出的不只是烟,更是中国制造向智造迈进的烟火气。但就在我们感叹工业繁荣的同时,不得不面对一个残酷的现实:在数…

作者头像 李华
网站建设 2026/8/10 9:43:05

Cloudflare Kitesurf:边缘计算中的轻量级浏览器自动化新方案

如果你是一名前端开发者,或者正在构建需要与网页交互的自动化工具,那么最近几天,你的技术圈可能被一个词刷屏了: Kitesurf 。 这不是一项新的极限运动,而是 Cloudflare 刚刚发布的一个实验性项目。它的官方描述是“…

作者头像 李华
网站建设 2026/8/10 9:42:14

OpenAI Astra网络能力升级下的智能体安全开发实战指南

如果你最近关注AI领域,可能会注意到一个现象:OpenAI正在加速推进其多模态AI助手Astra的发布进程。但与此同时,一个更值得开发者警惕的信号是,OpenAI正在同步收紧其API的安全管控措施。这并非巧合,而是一个明确的战略转…

作者头像 李华
网站建设 2026/8/10 9:40:56

Cesium与虚幻引擎蓝图UI集成实战:地理可视化交互开发指南

1. 项目概述:当Cesium遇见虚幻引擎如果你和我一样,是个对三维地理可视化(比如数字孪生、智慧城市)和游戏级实时渲染都充满热情的技术人,那么把Cesium这个地理空间领域的“王者”塞进虚幻引擎(UE&#xff09…

作者头像 李华
网站建设 2026/8/10 9:39:47

Windows C++网络编程:Boost.Asio从环境配置到TCP/UDP实战

1. 项目概述:为什么在Windows上选择Boost.Asio? 如果你在Windows平台上用C搞过网络编程,大概率被Winsock API折磨过。那套基于句柄和事件的异步模型,代码写起来又臭又长,回调函数满天飞,状态管理更是噩梦。…

作者头像 李华
网站建设 2026/8/10 9:39:07

Java多线程同步:synchronized原理与最佳实践

1. 为什么我们需要synchronized? 当我在2013年第一次遇到多线程数据竞争问题时,一个简单的计数器程序给了我深刻教训。当时我创建了10个线程同时对同一个计数器进行操作,理论上应该得到10000,但实际运行结果总是在8000-9000之间波…

作者头像 李华