cpp
#include
int main() {
long long m;
std::cout << "Enter the value of m: ";
std::cin >> m;
long long n = 1; // 初始值设为1(可根据需求修改)
int steps = 0; // 记录乘法操作次数
// 循环直到 n > m
while (n <= m) {
n *= 2;
steps++;
}
// 输出结果
std::cout << "Final value of n: " << n << std::endl;
std::cout << "Steps required: " << steps << std::endl;
return 0;
}
### 关键点解释
1. **数据类型选择**
使用 `long long` 确保在 `m` 接近 `1e9` 时不会溢出(最大支持到 `9e18`)。
2. **循环逻辑**
`while (n <= m)` 控制循环条件,每次迭代执行 `n *= 2` 并记录步数。
3. **初始值灵活性**
若需从自定义的 `n` 开始(非1),只需修改 `long long n = your_value;`。
4. **时间复杂度**
复杂度为 **O(log m)**,可高效处理 `m` 极大值的情况。
### 示例输出
Enter the value of m: 1000
Final value of n: 1024
Steps required: 10