1 条题解

  • 0
    @ 2026-6-19 10:30:06

    📝 题目大意

    给定一个整数 NN0N300 \leq N \leq 30),计算并输出 2N2^N 的值。

    💡 解题思路

    1. 题目分析NN 最大为 3030230=1,073,741,8242^{30} = 1,073,741,824,在 int 范围内(约 2.1×1092.1 \times 10^9),但保险起见使用 long long 避免溢出风险。
    2. 算法推导:初始化答案 ans = 1(即 202^0),循环 NN 次,每次将 ans 乘以 22。循环结束后 ans 即为 2N2^N。这是最朴素、最直观的幂运算实现,对于 N30N \leq 30 完全可行。
    3. 边界与细节
      • N=0N = 0 时,循环不执行,ans 保持为 11,即 20=12^0 = 1,结果正确。
      • 也可以使用位运算 1LL << N 一行解决,但标准代码采用循环方式更易理解。

    ⏱️ 复杂度分析

    • 时间复杂度O(N)O(N),最多 3030 次循环,常数级别。
    • 空间复杂度O(1)O(1),仅使用常数个变量。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        long long n, ans = 1;  // ans 初始化为 2^0 = 1
        cin >> n;
        // 循环 N 次,每次乘以 2,得到 2^N
        for(int i = 1; i <= n; i++){
            ans *= 2;
        }
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    611
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者