mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
48 lines
2.5 KiB
HTML
48 lines
2.5 KiB
HTML
<p>给你一个整数 <code>k</code> 和一个整数 <code>x</code> 。</p>
|
||
|
||
<p>令 <code>s</code> 为整数 <code>num</code> 的下标从 <strong>1</strong> 开始的二进制表示。我们说一个整数 <code>num</code> 的 <strong>价值</strong> 是满足 <code>i % x == 0</code> 且 <code><font face="monospace">s[i]</font></code> 是 <strong>设置位</strong> 的 <code>i</code> 的数目。</p>
|
||
|
||
<p>请你返回<strong> 最大</strong> 整数<em> </em><code>num</code> ,满足从 <code>1</code> 到 <code>num</code> 的所有整数的 <strong>价值</strong> 和小于等于 <code>k</code> 。</p>
|
||
|
||
<p><b>注意:</b></p>
|
||
|
||
<ul>
|
||
<li>一个整数二进制表示下 <strong>设置位</strong> 是值为 <code>1</code> 的数位。</li>
|
||
<li>一个整数的二进制表示下标从右到左编号,比方说如果 <code>s == 11100</code> ,那么 <code>s[4] == 1</code> 且 <code>s[2] == 0</code> 。</li>
|
||
</ul>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<b>输入:</b>k = 9, x = 1
|
||
<b>输出:</b>6
|
||
<b>解释:</b>数字 1 ,2 ,3 ,4 ,5 和 6 二进制表示分别为 "1" ,"10" ,"11" ,"100" ,"101" 和 "110" 。
|
||
由于 x 等于 1 ,每个数字的价值分别为所有设置位的数目。
|
||
这些数字的所有设置位数目总数是 9 ,所以前 6 个数字的价值和为 9 。
|
||
所以答案为 6 。</pre>
|
||
|
||
<p><strong class="example">示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<b>输入:</b>k = 7, x = 2
|
||
<b>输出:</b>9
|
||
<b>解释:</b>由于 x 等于 2 ,我们检查每个数字的偶数位。
|
||
2 和 3 在二进制表示下的第二个数位为设置位,所以它们的价值和为 2 。
|
||
6 和 7 在二进制表示下的第二个数位为设置位,所以它们的价值和为 2 。
|
||
8 和 9 在二进制表示下的第四个数位为设置位但第二个数位不是设置位,所以它们的价值和为 2 。
|
||
数字 1 ,4 和 5 在二进制下偶数位都不是设置位,所以它们的价值和为 0 。
|
||
10 在二进制表示下的第二个数位和第四个数位都是设置位,所以它的价值为 2 。
|
||
前 9 个数字的价值和为 6 。
|
||
前 10 个数字的价值和为 8,超过了 k = 7 ,所以答案为 9 。</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= k <= 10<sup>15</sup></code></li>
|
||
<li><code>1 <= x <= 8</code></li>
|
||
</ul>
|