2026-10-23:给定数位和的最大整数。用go语言,给定两个非负整数 n 和 s。请在所有位数不超过 n 的非负整数中,找出一个数,使它各个数位上的数字加起来恰好等于 s,并且这个数要尽可能大。如

发布时间:2026/10/24 5:38:38

2026-10-23:给定数位和的最大整数。用go语言,给定两个非负整数 n 和 s。请在所有位数不超过 n 的非负整数中,找出一个数,使它各个数位上的数字加起来恰好等于 s,并且这个数要尽可能大。如 2026-10-23给定数位和的最大整数。用go语言给定两个非负整数 n 和 s。请在所有位数不超过 n 的非负整数中找出一个数使它各个数位上的数字加起来恰好等于 s并且这个数要尽可能大。如果找不到符合条件的数就返回 -1。1 n 5。0 s 100。输入 n 2, s 9。输出 90。解释最多由 2 位数字组成且各位数字之和为 9 的最大整数是 90。题目来自力扣4000。分步骤过程先判断是否可能构造一个数最多有n位。每一位最大只能是9。因此最多n位的数各位数字之和最大是n * 9。如果目标和s大于n * 9说明即使每一位都放 9也凑不到s因此不存在符合条件的数直接返回-1。计算需要用多少个 9用s除以9得到商和余数。商表示可以先用多少个数字 9。余数表示用完整数个 9 之后还剩下多少数字和需要安排。例如s 9时商为 1余数为 0表示可以用一个 9。先构造由若干个 9 组成的高位部分如果有q s / 9个 9就先构造一个由q个 9 组成的数。例如q 1时得到9q 2时得到99。这一步的目的是把最大的数字尽量放在高位使最终整数尽可能大。处理余数如果s除以 9 的余数大于 0说明除了若干个 9 之外还需要再放一个数字这个数字就是余数。把这个余数接在前面已经构造好的若干个 9 的后面。因为多使用了一位数字所以可用的剩余位数要减少 1。例如如果已经有若干个 9余数为 6就会形成“……9 6”的形式。如果余数为 0则不需要追加数字也不减少剩余位数。剩余低位全部补 0此时已经安排了若干个 9可能还安排了一个余数。为了让整数尽可能大已经使用的高位不能再变小剩余的低位对数值影响最小因此全部补 0。计算还需要补多少个 0用当前剩余可用位数减去已经使用的 9 的个数。在数值后面补相应数量的 0相当于把原数乘以 10 的若干次幂。补 0 后总位数不会超过n并且不会改变各位数字之和。返回构造出的整数最终得到的数满足位数不超过n各位数字之和等于s在所有满足条件的数中高位尽量由 9 占据因此数值最大。如果前面判断不可能则返回-1。用示例说明输入n 2s 9过程最大数位和为2 * 9 189 18所以可能存在。9 / 9 1余数为0说明可以用一个 9。构造出一个 9。余数为 0不需要追加其他数字。当前最多 2 位已经用了 1 位还剩余 1 位低位补 0。得到90。因此输出为90。复杂度分析总时间复杂度在题目约束1 n 5下涉及的位数和幂运算规模都非常小可以视为常数时间即O(1)。如果按一般位数n来看构造和补 0 的过程与位数相关可描述为O(n)但在本题约束下仍是常数级。总额外空间复杂度整个过程中只使用了少量整数变量来保存商、余数、中间构造结果等没有使用与输入规模相关的额外数据结构因此额外空间复杂度为O(1)。Go完整代码如下packagemainimport(fmtmath)funclargestInteger(n,sint)int{ifsn*9{return-1}ans:int(math.Pow10(s/9))-1// 填 9ifs%90{ansans*10s%9// 填 s%9n--}returnans*int(math.Pow10(n-s/9))// 填 0}funcmain(){n:2s:9result:largestInteger(n,s)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-deflargest_integer(n:int,s:int)-int:ifsn*9:return-1ans10**(s//9)-1# 填 9ifs%90:ansans*10s%9# 填 s % 9n-1returnans*(10**(n-s//9))# 填 0defmain():n2s9resultlargest_integer(n,s)print(result)if__name____main__:main()C完整代码如下#includeiostreamlonglongpow10_int(inte){longlongr1;for(inti0;ie;i)r*10;returnr;}longlonglargestInteger(intn,ints){if(sn*9){return-1;}longlonganspow10_int(s/9)-1;// 填 9if(s%90){ansans*10s%9;// 填 s % 9n--;}returnans*pow10_int(n-s/9);// 填 0}intmain(){intn2;ints9;longlongresultlargestInteger(n,s);std::coutresultstd::endl;return0;}
延伸阅读

更多相关文章

2026/10/24 5:38:38

32 分钟不是完成科研:多智能体读脑图谱,突破在哪里?

32 分钟不是完成科研:多智能体读脑图谱,突破在哪里? 封面为 AI 生成的概念示意,不是论文原图、真实脑组织影像或实验结果。 系列:AI 前沿观察:人物、突破与证据解读日期:2026-10-22资料截止&am…

2026/10/24 5:33:37

2026年大模型人才稀缺!小白程序员抓住机遇

2026年招聘市场存在矛盾:企业急需掌握大模型能力的人才,但普通开发岗位需求下降。自学虽易,却难于将知识转化为实际项目经验。 2026 年的招聘市场,有两句话同时为真。 第一句:企业招不到人。 脉脉显示,2026…

2026/10/24 6:43:40

上海孤独症训练哪家专业

上海孤独症训练哪家专业 很多上海的孤独症患儿家长找康复机构时,最担心的是课程不贴合孩子认知节奏、教练不懂特需孩子的行为特点,试错成本很高。 文章插图 我身边有个家住浦东的朋友,家里5岁的男娃是轻度孤独症,之前坐不住10分钟…

2026/10/24 6:43:40

同一句 IRQ_NONE,独占线报警,共享线静默

本文是《request_irq 成功却收不到中断》系列第 1 篇。一条 IRQ 线上挂着两个设备。其中一个的 handler 里,状态位的掩码抄的是旧版手册: irqreturn_t my_handler(int irq, void *dev_id) {u32 status readl(dev->regs STATUS_REG);if (!(status &a…

2026/10/24 6:43:40

从“知道”到“做到”:一套可执行的技能学习框架

看到“skills”这个标题,我第一反应不是“技多不压身”这种漂亮话,而是另一个更扎心的问题:为什么我们断断续续学了不少技能,最后能真正派上用场的却寥寥无几?这些年我见过太多人收藏了一堆教程、买了好几门课&#xf…

2026/10/24 6:38:40

论文的预注册怎么做:适用性判据与登记要素清单

预注册并非所有研究的通用动作,它更像一道需要先做判断的选择题。判断的核心在于:研究是否以验证既有假设为目标,分析路径能否在数据到手之前写定。把这层判据想清楚,再谈登记哪些要素,才不至于把预注册做成形式主义。…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑