1 条题解

  • 0
    @ 2025-2-10 15:40:39

    思路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
    上传者