2026-07-08:统计区间内奇妙数的数目。用go语言,给定一个正整数 n,我们要考虑从 1 到 n 之间(包括 1 和 n)的所有整数。对每个数,按照常见的千位分隔习惯写成字符串:从个位开始向左数
2026-07-08统计区间内奇妙数的数目。用go语言给定一个正整数 n我们要考虑从 1 到 n 之间包括 1 和 n的所有整数。对每个数按照常见的千位分隔习惯写成字符串从个位开始向左数每三位插入一个逗号但如果这个数不足四位也就是小于 1000则不加任何逗号。问题是把 1 到 n 这 n 个数的这种书写形式连起来看总共出现了多少个逗号请计算出这个总数。1 n 100000。输入 n 1002。输出 3。解释数字 “1,000”、“1,001” 和 “1,002” 每个都包含一个逗号总计 3 个逗号。题目来自力扣38703871。一、函数 countCommas(n int64) 分步逻辑拆解步骤1定义变量kk代表每个数字固定拥有的逗号个数档位k 是完整千位段的数量对应数字统一携带的逗号数量数字区间 [10^(3m), 10^(3m3)-1] 内所有数都固定有 m 个逗号m01~999k0无逗号m11000~999999k11个逗号m21000000~999999999k22个逗号以此类推步骤2计算k的核心逻辑2.1 特殊边界说明当 n 10^15 时浮点数 math.Log10 会存在精度丢失无法正确算出位数因此代码预设兜底 k5题目限制 n≤100000不会触发该特判仅为超大数兼容。2.2 常规n1e15时的k计算流程将整数n转为浮点数调用 math.Log10 得到n的十进制位数减1例 n1002log10(1002)≈3.000867对结果取整数得到数字总位数减1int(3.000867)3整除3得到完整千位段数量k3 / 3 1含义1002属于1000~999999区间每个数字固定1个逗号k1步骤3拆分总逗号的数学公式推导总逗号 两部分相减总逗号 k × (n 1) − 前k个完整千位区间全部数字产生的逗号总和第一部分k × (n1)假设从1到n所有数字都有k个逗号先算出理论最大值。示例 n1002k11 × (10021) 1003含义假设1~1002每个数字都带1个逗号合计1003个逗号。第二部分(10^(3k3) − 1000) / 999这一步计算1 ~ (10^(3k)-1) 所有数字实际不含k个逗号的总差值也就是需要扣除的无效逗号数量。3k完整千位段对应的位数偏移k1时 3k33k3 610^6 100000010^6 − 1000 999000除以999999000 / 999 1000含义1~999 这1000个数字本身没有1个逗号前面理论计算时给它们全部算了1个逗号多算了1000个需要全部减去。步骤4合并公式计算最终答案代入示例 n1002总逗号 1003 − 1000 3和题目输出完全匹配。通用公式数学意义k 代表当前数字档位的标准逗号数k*(n1)给1~n全部数字强制分配k个逗号得到高估总和减数项统计所有小于10^(3k)的数字总个数这些数字本身不足k个逗号全部是多算的部分需要扣除相减后得到真实总逗号数量。步骤5main函数执行流程定义输入n1002转为int64类型传入countCommas执行上述数学计算得到结果打印输出最终逗号总数。二、整体算法核心思想总结不暴力遍历1~n逐个统计避免循环利用十进制千位分段数学公式直接计算按数字所在区间批量统计逗号先确定当前数字所在千位分段得到该分段标准逗号数k用整体高估法统一给所有数字分配k个逗号减去低位区间不足k个逗号的数字总数修正高估误差一步算出总逗号无循环、无逐一枚举。三、时间复杂度 额外空间复杂度分析1. 时间复杂度 O(1)整个计算仅执行常数次数学运算log10、整数转换、幂运算、四则加减乘除不存在循环、递归、遍历操作运算次数不随n的大小变化固定常数次计算时间复杂度为常量级 O(1)。2. 额外空间复杂度 O(1)函数内部仅定义固定数量局部变量k、ans无动态数组、切片、哈希、递归栈等动态内存分配的内存空间大小与输入n无关始终为固定常量空间额外空间复杂度 O(1)。Go完整代码如下packagemainimport(fmtmath)funccountCommas(nint64)(ansint64){k:5// n 1e15 时 Log10(n) 有误差需要特判ifn1e15{kint(math.Log10(float64(n)))/3}returnint64(k)*(n1)-(int64(math.Pow10(k*33))-1000)/999}funcmain(){n:1002result:countCommas(int64(n))fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-defcount_commas(n:int)-int: 返回从 1 到 n含所有整数的标准书写格式中逗号的总数 ifn1000:return0# k 表示最高位的逗号组数例如 n1000 时 k1n1_000_000 时 k2k(len(str(n))-1)//3# 使用公式k*(n1) - (10^(3k3) - 1000) / 999pow1010**(3*k3)returnk*(n1)-(pow10-1000)//999if__name____main__:n1002resultcount_commas(n)print(result)C完整代码如下#includeiostream#includecmath#includecstdintint64_tcountCommas(int64_tn){intk5;// 当 n 1e15 时直接取 5避免 log10 的精度误差constexprint64_tthreshold1000000000000000LL;// 1e15if(nthreshold){kstatic_castint(std::log10(static_castdouble(n)))/3;}int64_tpow10static_castint64_t(std::pow(10.0,k*33));returnstatic_castint64_t(k)*(n1)-(pow10-1000)/999;}intmain(){int64_tn1002;int64_tresultcountCommas(n);std::coutresultstd::endl;return0;}

相关新闻

5分钟快速上手:GlusterFS Dashboard安装与配置完全指南

5分钟快速上手:GlusterFS Dashboard安装与配置完全指南

5分钟快速上手:GlusterFS Dashboard安装与配置完全指南 【免费下载链接】glusterfs-dashboard dashboard for glusterfs 项目地址: https://gitcode.com/openeuler/glusterfs-dashboard 前往项目官网免费下载:https://ar.openeuler.org/ar/ Glus…

2026/7/8 15:30:44阅读更多 →
openEuler ROS MoveIt2教程:机械臂运动规划与控制实践终极指南

openEuler ROS MoveIt2教程:机械臂运动规划与控制实践终极指南

openEuler ROS MoveIt2教程:机械臂运动规划与控制实践终极指南 【免费下载链接】ros It provides ROS source for openEuler 项目地址: https://gitcode.com/openeuler/ros 前往项目官网免费下载:https://ar.openeuler.org/ar/ 想要在openEuler操…

2026/7/8 15:30:44阅读更多 →
C-NCAP 2024版 AEB/LKA测试:10大误触发场景与3项新增法规解读

C-NCAP 2024版 AEB/LKA测试:10大误触发场景与3项新增法规解读

C-NCAP 2024版AEB/LKA测试:10大误触发场景与3项新增法规深度解析 随着智能驾驶技术的快速发展,AEB(自动紧急制动)和LKA(车道保持辅助)系统已成为现代车辆安全配置的核心组成部分。2024版C-NCAP规程对这两大…

2026/7/8 15:30:44阅读更多 →
Java内存马查杀实战:从JVM原理到应急响应的完整指南

Java内存马查杀实战:从JVM原理到应急响应的完整指南

1. 项目概述:从应急响应到内存马查杀的实战闭环在蓝队日常的应急响应工作中,最让人头疼的莫过于那些“看不见、摸不着”的威胁。传统的文件型Webshell,好歹还有个落地文件可以溯源、删除。但内存马不同,它像幽灵一样驻留在JVM的运…

2026/7/8 16:36:12阅读更多 →
5个免费AI音频处理技巧:在Audacity中本地运行OpenVINO插件的完整指南

5个免费AI音频处理技巧:在Audacity中本地运行OpenVINO插件的完整指南

5个免费AI音频处理技巧:在Audacity中本地运行OpenVINO插件的完整指南 【免费下载链接】openvino-plugins-ai-audacity A set of AI-enabled effects, generators, and analyzers for Audacity. 项目地址: https://gitcode.com/gh_mirrors/op/openvino-plugins-ai-…

2026/7/8 16:36:12阅读更多 →
Vulnserver实战:从栈溢出到SEH利用的漏洞利用入门指南

Vulnserver实战:从栈溢出到SEH利用的漏洞利用入门指南

1. 项目概述:为什么Vulnserver是学习漏洞利用的“黄金标准” 如果你对网络安全、渗透测试或者逆向工程感兴趣,并且已经厌倦了那些“点到为止”的理论教程,那么Vulnserver这个名字你一定不陌生。它不是什么商业软件,也不是一个真实…

2026/7/8 16:36:12阅读更多 →
NCMDump完全解密:突破网易云音乐格式限制的终极指南

NCMDump完全解密:突破网易云音乐格式限制的终极指南

NCMDump完全解密:突破网易云音乐格式限制的终极指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经为网易云音乐下载的.ncm格式文件而烦恼?这些被加密的音乐文件无法在其他播放器上使用&#xff0…

2026/7/8 16:36:12阅读更多 →
Windows更新故障终极解决方案:Reset Windows Update Tool深度解析

Windows更新故障终极解决方案:Reset Windows Update Tool深度解析

Windows更新故障终极解决方案:Reset Windows Update Tool深度解析 【免费下载链接】Script-Reset-Windows-Update-Tool This script reset the Windows Update Components. 项目地址: https://gitcode.com/gh_mirrors/sc/Script-Reset-Windows-Update-Tool 当…

2026/7/8 16:36:12阅读更多 →
CompressO:免费开源的终极媒体压缩工具,一键将视频图片缩小90%

CompressO:免费开源的终极媒体压缩工具,一键将视频图片缩小90%

CompressO:免费开源的终极媒体压缩工具,一键将视频图片缩小90% 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mir…

2026/7/8 16:31:11阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →