Loading

【每日一题】LeetCode 1680. 连接连续二进制数字

给你一个整数 \(n\) ,请你将 \(1\)\(n\) 的二进制表示连接起来,并返回连接结果对应的十进制数字对 \(\left(10^9 + 7\right)\) 取余的结果。


本质上连接二进制可以视为反复乘以 \(2\) 的某个幂次再加上一个数,因此取模是正确的,直接模拟即可。

class Solution {
public:
    int concatenatedBinary(int n) {
        long long ans = 0;
        const int mod = 1000000007;
        for (int i = 1; i <= n; ++i) {
            ans = ((ans << (std::__lg(i) + 1)) + i) % mod;
        }
        return ans;
    }
};

posted @ 2026-02-28 22:25  escap1st  阅读(8)  评论(0)    收藏  举报