给定一个数n,找出通过连接前n 个自然数的二进制表示形式形成的数字的十进制值。
打印答案模 10^9+7。
此外,n可以大到 10^9,因此需要对数时间方法。
例如:n = 4,答案 =220
解释:数字形成= 11011100( 1=1, 2=10, 3=11, 4=100)。11011100= 的十进制值"220"。
我在下面使用的代码仅适用于第一个整数N<=15
String input = "";
for(int i = 1;i<=n;i++) {
input += (Integer.toBinaryString(i));
}
return Integer.parseInt(input,2);
Run Code Online (Sandbox Code Playgroud)