题目地址:
https://leetcode.com/problems/concatenation-of-consecutive-binary-numbers/description/
给定一个正整数 n n n,将 1 ∼ n 1\sim n 1∼n的二进制数连接起来得到的数的十进制模 1 0 9 + 7 10^9+7 109+7后返回。
递归,代码如下:
class Solution {
public:
int concatenatedBinary(int n) {
static const int MOD = 1e9 + 7;
if (n == 1) return 1;
long x = concatenatedBinary(n - 1);
int cnt = 0, m = n;
while (m) cnt++, m >>= 1;
return ((x << cnt) + n) % MOD;
}
};
时空复杂度 O ( n ) O(n) O(n)。