网站如何做seo,做瑜伽网站,个人简历模板下载 免费完整版,广州比较好的广告公司有哪些【LetMeFly】1680.连接连续二进制数字#xff1a;O(n)左移位运算 力扣题目链接#xff1a;https://leetcode.cn/problems/concatenation-of-consecutive-binary-numbers/ 给你一个整数 n #xff0c;请你将 1 到 n 的二进制表示连接起来#xff0c;并返回连接结果对应的 …【LetMeFly】1680.连接连续二进制数字O(n)左移位运算力扣题目链接https://leetcode.cn/problems/concatenation-of-consecutive-binary-numbers/给你一个整数n请你将1到n的二进制表示连接起来并返回连接结果对应的十进制数字对109 7取余的结果。示例 1输入n 1输出1解释二进制的 1 对应着十进制的 1 。示例 2输入n 3输出27解释二进制下12 和 3 分别对应 1 10 和 11 。 将它们依次连接我们得到 11011 对应着十进制的 27 。示例 3输入n 12输出505379714解释连接结果为 1101110010111011110001001101010111100 。 对应的十进制数字为 118505380540 。 对 109 7 取余后结果为 505379714 。提示1 n 105解题方法位运算将a aa和b bb的二进制拼接结果等于a × 10 b i t _ l e n ( b ) b a\times 10^{bit\_len(b)} ba×10bit_len(b)b而乘法和加法对于取模运算都是幂等的所以从1 11到n nn一次遍历不断拼接相邻两个整数并不断取模即可。如何求得一个整数的二进制长度很多编程语言都有库函数例如C可以使用__builtin_clz求得一个整数二进制下前导零的个数32位整数的位数32 3232减去前导零的个数就是这个数二进制的长度。时间复杂度O ( n ) O(n)O(n)。大多数现代架构会把__builtin_clz直接映射为单条硬件指令单次执行时间复杂度是O ( 1 ) O(1)O(1)空间复杂度O ( 1 ) O(1)O(1)AC代码C/* * LastEditTime: 2026-02-28 10:15:41 */typedeflonglongll;constll MOD1e97;classSolution{public:intconcatenatedBinary(intn){ll ans0;for(inti1;in;i){ans((ans(32-__builtin_clz(i)))i)%MOD;}returnans;}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源