P9502题解
普通模拟的别的题解应该都有了,现在我来介绍一种不同寻常的偷懒方法!
思路分析
确定最大值
题目要我们求
但是,我们可以发现,
所以我们可以使用 C++ 中的 log2() 函数,快速求出
不过,可不能这样结束。
进行微调
题目中提到了,要使
另外,题目强烈提醒我们
程序实现
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
cin >> n;
int m = floor(log2(n)); // 将log2(n)的值向下取整
if ((1 << m) == n) m--; // 第一类微调
if (m & 1) m--; // 第二类微调
cout << m;
return 0;
}