1 条题解
-
0
思路2代码:
#include <bits/stdc++.h> using namespace std; // 高精度乘以2的函数 void ByTwo(vector<int>& res) { int carry = 0; // 用于存储进位 // 遍历当前的每一位,乘2并处理进位 for (int i = 0; i < res.size(); ++i) { // 当前位乘以2并加上之前的进位 int temp = res[i] * 2 + carry; // 当前位结果是 temp 除以 10 的余数 res[i] = temp % 10; // 更新进位,temp 除以 10 的商 carry = temp / 10; } // 如果有进位,则继续往结果中添加 while (carry) { res.push_back(carry % 10); // 添加进位 carry /= 10; // 更新进位 } } int main() { int N; cin >> N; // 输入N,表示要求2的N次方 // 初始化结果为1,表示2的0次方 vector<int> res(1, 1); // 循环N次,每次乘以2 for (int i = 0; i < N; ++i) { ByTwo(res); // 计算 2 的 i 次方 } // 从高位到低位输出结果 for (int i = res.size() - 1; i >= 0; i--) { cout << res[i]; // 输出每一位 } cout << endl; // 输出换行 return 0; // 程序结束 }
- 1
信息
- ID
- 650
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 11
- 已通过
- 5
- 上传者