jencky
回答者
回答于 2025-03-29
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;
}
关键点解释
-
数据类型选择
使用long long确保在m接近1e9时不会溢出(最大支持到9e18)。 -
循环逻辑
while (n <= m)控制循环条件,每次迭代执行n *= 2并记录步数。 -
初始值灵活性
若需从自定义的n开始(非1),只需修改long long n = your_value;。 -
时间复杂度
复杂度为 O(log m),可高效处理m极大值的情况。
示例输出
Enter the value of m: 1000 Final value of n: 1024 Steps required: 10