#10580. 珅泽教育CSP-J第一轮模拟考第十三套 第 33 题
珅泽教育CSP-J第一轮模拟考第十三套 第 33 题
第3题
using i64 = long long;
i64 solve1(i64 n)
{
std::vector<i64> c(n);
c[0] = 0;
i64 sum = 0;
for (i64 i = 1; i < n; ++i)
{
c[i] = c[i / 2] + (i % 2);
sum += c[i];
}
return sum;
}
std::pair<i64,i64> solve2(i64 n)
{
if (n == 0)
return {0, 0};
auto r = n % 2;
auto q = n / 2;
auto [s, c] = solve2(q);
if (r == 1)
return {s*2 + q + c, c + 1};
else
return {s*2 + q, c};
}
solve2(n) 的第二个返回值,计算的是( )。
{{ select(1) }}
- 参数 的二进制长度
- 参数 的十进制长度
- 参数 在二进制表示下,0的数量
- 参数 在二进制表示下,1的数量