1 条题解
-
0
一、核心公式(标程唯一逻辑)
这段代码的功能只有一行: 对于每组输入 ,输出答案:
在代码中用位运算左移实现:
k << n等价于数学公式
二、位运算原理
- 左移 位:
- 左移 位:
标程直接用
k << n代替乘法,速度更快。
三、标程代码逐行解释
#include <iostream> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); // 加速 cin/cout,避免大数据超时 int T; cin >> T; // 输入测试用例组数 while (T--) { long long n, k; // 使用 long long 防止溢出 cin >> n >> k; // 输入每组的 n, k cout << (k << n) << '\n'; // 输出 k * 2^n } return 0; }
四、为什么要用
long long?因为 增长极快,例如:
- →
- →
int只能存到 ,必须用long long(64位整数)。
五、时间复杂度
- 每组
- 总复杂度
六、等价数学写法
你也可以写成这样,结果完全一样:
cout << k * (1LL << n) << '\n';
总结
- 功能:计算
- 实现:位运算
k << n - 注意:必须用
long long防溢出
- 1
信息
- ID
- 6480
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者