LeetCode 2413 Smallest Even Multiple 题解:奇偶分类与位运算的 O(1) 解法(codeforces-go 仓库实战指南)
科学计算【免费下载链接】codeforces-go算法竞赛模板库 by 灵茶山艾府 项目地址https://gitcode.com/GitHub_Trending/co/codeforces-go点击查看免费下载本篇技术指南以 codeforces-go 仓库中 LeetCode 第 311 场周赛第一题题解文档 为主体完整讲解《Smallest Even Multiple最小偶倍数LeetCode 2413》的数学推导、公式解与位运算解并结合仓库内的 Go 实现、测试数据与测试框架源码给出可复制、可验证的完整解法与学习路径。读完本文你将掌握按奇偶分类 公式化简与位运算代替分支两类经典技巧并了解本仓库 LeetCode 题解目录的代码组织与自动化测试方式。题目背景与题意本题来自 LeetCode 第 311 场周赛的第一题Problem A题解文档位于仓库的 leetcode/weekly/311/a/README.md对应题目为 LeetCode 2413给定一个正整数n求最小的能同时被n和2整除的正整数即lcm(n, 2)。它是典型的送分题但恰好涵盖了算法竞赛中两个高频思维点分类讨论case by case根据n的奇偶性分情况化简问题位运算优化把分支判断压缩成一条无分支的位运算表达式。题解文档给出了两种解法并提供了 Python3、Java、C、C、Go、JavaScript、Rust 共 7 种语言的实现本文逐一讲解其原理并给出仓库内的落地证据。数学推导按奇偶分类题解文档的核心结论非常简洁当n为奇数时n本身不包含因子2所以最小的偶倍数必须额外乘一个2答案为2n当n为偶数时n本身就是偶数已同时是n和2的倍数答案为n。因此答案可以统一写成一条公式$$ (n\bmod 2 1) \cdot n $$推导逻辑验证若n为奇数n mod 2 1公式给出(11)·n 2n若n为偶数n mod 2 0公式给出(01)·n n。两种情况与分类结论完全吻合。公式解的 7 语言实现题解文档给出的公式解法实现如下原样继承可直接复制运行class Solution: def smallestEvenMultiple(self, n: int) - int: return (n % 2 1) * nclass Solution { public int smallestEvenMultiple(int n) { return (n % 2 1) * n; } }class Solution { public: int smallestEvenMultiple(int n) { return (n % 2 1) * n; } };int smallestEvenMultiple(int n) { return (n % 2 1) * n; }func smallestEvenMultiple(n int) int { return (n%2 1) * n }var smallestEvenMultiple function(n) { return (n % 2 1) * n; };impl Solution { pub fn smallest_even_multiple(n: i32) - i32 { (n % 2 1) * n } }注意 Go 版本的语法细节n%2 1需要写成n%2 1模运算与加法之间存在空格分隔若写成n%21在 Go 中会被解析为n%(21)得到完全错误的结果——这是 Go 语法中一个经典的易错点在 Go 语言规范里%、*、/属于同一优先级级别 5而、-属于低一级的级别 4两侧都是运算符时按从左到右结合n%21实际是(n%2)1因此书写时必须保证模运算被正确解析。仓库中的 Go 实现见 leetcode/weekly/311/a/a.go。位运算优化无分支的n (n 1)题解文档进一步指出答案也可以看成n为奇数时n左移一位否则不变因此可以用位运算解决n 1取n二进制的最低位奇数时为1偶数时为0n 1等价于2n二进制左移一位末位补零n 0就是n本身。于是n (n 1)一个表达式即可完成全部逻辑奇数时左移一位得2n偶数时不移动得n。这一写法用位运算消除了分支判断是用位运算做分类讨论的代表性技巧也契合题解中位运算基础/性质/拆位/试填/恒等式/思维这一题单分类的主题。各语言位运算实现如下class Solution: def smallestEvenMultiple(self, n: int) - int: return n (n 1)class Solution { public int smallestEvenMultiple(int n) { return n (n 1); } }class Solution { public: int smallestEvenMultiple(int n) { return n (n 1); } };int smallestEvenMultiple(int n) { return n (n 1); }func smallestEvenMultiple(n int) int { return n (n 1) }var smallestEvenMultiple function(n) { return n (n 1); };impl Solution { pub fn smallest_even_multiple(n: i32) - i32 { n (n 1) } }复杂度分析题解文档给出的复杂度结论时间复杂度$\mathcal{O}(1)$无循环常量次运算空间复杂度$\mathcal{O}(1)$仅使用常量级额外空间。公式解与位运算解在复杂度上完全一致区别仅在于实现风格前者直白易懂、后者更贴合位运算高手的审美并可在某些场景下避免分支预测的开销。仓库实战Go 实现、测试数据与测试框架作为算法竞赛模板仓库 codeforces-go 的一部分这道题不仅记录了题解还配套了可直接运行的 Go 代码与自动化测试形成题解 实现 用例 测试驱动的完整闭环。这与 leetcode/weekly/311/a/README.md 中给出的 Go 解法一一对应。1. 实现文件仓库采用位运算版作为最终提交实现见 leetcode/weekly/311/a/a.gopackage main // https://space.bilibili.com/206214 func smallestEvenMultiple(n int) int { return n (n 1) }2. 测试文件与数据leetcode/weekly/311/a/a_test.go 通过testutil.RunLeetCodeFuncWithFile从 leetcode/weekly/311/a/a.txt 读取测试数据并驱动验证func Test_a(t *testing.T) { targetCaseNum : 0 // -1 if err : testutil.RunLeetCodeFuncWithFile(t, smallestEvenMultiple, a.txt, targetCaseNum); err ! nil { t.Fatal(err) } }leetcode/weekly/311/a/a.txt 中按每输入参数个数 输出个数行一组存放用例本题为1 输入 1 输出即两行一组5 10 6 6即两个测试用例smallestEvenMultiple(5) 10奇数翻倍与smallestEvenMultiple(6) 6偶数不变与题解的奇偶分类结论完全一致。3. 测试框架原理测试驱动核心位于 leetcode/testutil/leetcode.goRunLeetCodeFuncWithFile读取用例文件按fNumIn fNumOut行切分成用例组逐组调用函数并比对输出RunLeetCodeFuncWithExamples使用反射reflect将文本参数解析为函数入参、将实际返回值序列化为字符串与期望输出比对并支持指定单条用例调试targetCaseNum为负数时表示倒数第几个用例如-1表示最后一个用例以及超时检测isTLE配合DebugTLE。也就是说在仓库目录下运行go test ./leetcode/weekly/311/a/即可自动验证位运算解法在样例数据上的正确性这也反向验证了题解文档结论的可复现性。延伸学习从一题到一类位运算技巧本题的n 1、n k只是位运算的入门用法。本仓库在 copypasta/bits.go 中对位运算做了系统化整理包括运算符优先级速查% * / ^高于 - | ^这正是上文中 Go 写法易错点的根源仓库注释中直接给出了 Go 规范中的优先级表math/bits标准库常用函数说明如bits.Len(x)与 $\log_2$ 的换算关系floor(log2(x)) bits.Len(x) - 1、bits.Len(0) 0的边界坑按主题整理的题单与链接与或AND/OR的区间单调性、异或XOR的性质、按位试填、恒等式、构造等进阶技巧及其对应练习题目可作为从一题走向一类的进阶路径。小结LeetCode 2413 虽然是一道简单题却完整展示了三个值得沉淀的思维模板奇偶分类 公式化简(n mod 2 1) · n把两种情况统一进一条公式避免手写if/else位运算代替分支n (n 1)用移位与最低位提取一次性完成逻辑是位运算题单copypasta/bits.go的经典入门案例题解驱动的仓库工程实践在 codeforces-go 中每题都有README.md题解.go实现.txt用例_test.go测试四件套可通过 leetcode/testutil/leetcode.go 的RunLeetCodeFuncWithFile一键验证这一模式同样适用于周赛其余题目如本场 b/c/d 题见 leetcode/weekly/311/ 目录。参考仓库路径汇总题解文档leetcode/weekly/311/a/README.mdGo 实现leetcode/weekly/311/a/a.go测试驱动leetcode/weekly/311/a/a_test.go测试数据leetcode/weekly/311/a/a.txt测试框架leetcode/testutil/leetcode.go位运算专题copypasta/bits.go赞分享科学计算【免费下载链接】codeforces-go算法竞赛模板库 by 灵茶山艾府 项目地址https://gitcode.com/GitHub_Trending/co/codeforces-go点击查看免费下载相关推荐交替比特位判定 O(1) 位运算解法解析 codeforces-go 中的 LeetCode 693 题解交替比特位判定 O 1 位运算解法解析 codeforces go 中的 LeetCode 693 题解 本文围绕 LeetCode 693「交替位二进制数」科学计算codeforces-go 仓库题解精读LeetCode 1920「基于排列构建数组」的 O(1) 空间位运算标记法codeforces go 仓库题解精读LeetCode 1920「基于排列构建数组」的 O 1 空间位运算标记法 导读 本文精读 LeetCode 1920科学计算LeetCode 2680「最大或值」双解法拆解前后缀分解与 O(1) 空间位运算优化codeforces-go 实战指南LeetCode 2680「最大或值」双解法拆解前后缀分解与 O 1 空间位运算优化codeforces go 实战指南 导读 本文以 codeforce科学计算上一篇用 EJBCA Community CA 在 Fleet 中做端到端 SCEP 集成测试完整实战指南下一篇AG-UI 集成 LlamaIndex用 TypeScript 客户端将 RAG 工作流接入前端应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

纯虚函数与抽象类:接口该怎么设计

纯虚函数与抽象类:接口该怎么设计

设计一套可扩展的 C 系统时,你迟早会写出「只定义契约、不提供实现」的类:它规定「凡是我的子类都必须有 area() 和 draw(),但怎么实现我不管」。这种类就是抽象类(abstract class),靠 纯虚函数&#xff08…

2026/10/10 6:06:48 阅读更多 →
业务参与者规则不显示构件包?沿工作流运行时加载链路排查

业务参与者规则不显示构件包?沿工作流运行时加载链路排查

看到“业务参与者规则没有显示构件包及构件包下流程事件,work目录下也未生成当前构件包目录”这个描述,我第一反应是:这不是一个单纯的界面显示问题,而是服务在运行态压根没有把目标构件包加载进来。业务参与者规则界面显示的构件…

2026/10/10 6:06:48 阅读更多 →
Linux 端口不通怎么排查?firewalld 不是超时而是 No route to host,三台真机实测 firewalld / ufw / iptables / SELinux

Linux 端口不通怎么排查?firewalld 不是超时而是 No route to host,三台真机实测 firewalld / ufw / iptables / SELinux

这一篇讲什么 「端口不通」是最常见也最容易瞎折腾的问题:服务起了、防火墙也开了,外面还是连不上。本篇在三台机器上把排查链条从头到尾实跑一遍:先分清报错类型 → 本机在不在监听 → 防火墙 → SELinux / AppArmor。 实测环境同(一):CentOS 7.9(VMware)、Rocky 9.8、Ubuntu …

2026/10/10 6:06:48 阅读更多 →

最新新闻

VMware虚拟机跑Linux实战:安装、网络、调优与排错

VMware虚拟机跑Linux实战:安装、网络、调优与排错

如果你是在校学生、运维新手,或者跟我一样平时要跟嵌入式开发、机械臂仿真、多系统测试打交道,那么 VMware 搭配 Linux 虚拟机绝对是你绕不开的组合。我这两年几乎把所有乱七八糟的实验环境都塞进了虚拟机里,从 Ubuntu 桌面版到精简的嵌入式 …

2026/10/10 6:41:01 阅读更多 →
C#桌面应用单实例实现:Mutex、窗口激活与进程互斥方案详解

C#桌面应用单实例实现:Mutex、窗口激活与进程互斥方案详解

很多写C#桌面工具的人,不管做上位机、小工具还是正经业务系统,几乎都会碰到同一个需求:程序只能开一个实例。用户双击了两次图标,第二次不应该再拉起一个新进程,而是应该把已经打开的那个窗口唤到前台。这个需求听起来…

2026/10/10 6:41:01 阅读更多 →
SpringBoot云宠之家管理系统:设计、实现与踩坑复盘

SpringBoot云宠之家管理系统:设计、实现与踩坑复盘

做管理系统这几年,我最大的体会是:毕设或练手项目真正难啃的往往不是某个技术点,而是“一堆技术点黏在一起时怎么理清楚”。这次拿“基于SpringBoot的云宠之家管理系统设计与实现”做个完整复盘——从需求拆解、技术选型、数据库设计到核心模…

2026/10/10 6:41:01 阅读更多 →
Octop自托管AI助手Docker部署与多Agent协作实战

Octop自托管AI助手Docker部署与多Agent协作实战

1. 为什么我盯上了这个自托管AI助手项目第一次看到 Octop 这个项目的时候,我正在给自己那台常年吃灰的飞牛 NAS 找点正经事干。说实话,市面上各种 AI 助手工具我试过不少,要么是纯云端服务、数据全在别人服务器上跑,要么是本地部署…

2026/10/10 6:41:01 阅读更多 →
AnyPS5:轻量级设备统一纳管与自动化任务分发系统实践

AnyPS5:轻量级设备统一纳管与自动化任务分发系统实践

1. 项目缘起与核心目标做这套系统的念头,最早来自一次让我非常头疼的运维事故。当时团队维护着分散在不同位置的几百台设备,这些设备型号不一、系统版本各异,有常规的服务器,也有很精简的嵌入式设备。日常工作中需要在设备之间搬运…

2026/10/10 6:41:01 阅读更多 →
pdi-ce-8.2.0.0-11.zip 解压到跑通第一条转换:Kettle 社区版 ETL 实战

pdi-ce-8.2.0.0-11.zip 解压到跑通第一条转换:Kettle 社区版 ETL 实战

简介:这份资源是Pentaho Data Integration(Kettle)社区版8.2.0.0-11的完整安装包,面向从事数据集成、ETL开发与数据库同步的工程师及数据仓库学习者。Kettle以纯Java编写,可在Windows、Linux、Unix等平台运行&#xff…

2026/10/10 6:40:01 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →