1 条题解

  • 0
    @ 2025-10-30 17:12:11

    思路分析

    1. 任务拆解:

    • 读取整数n
    • 判断n是否为负数(负数不是2的幂)
    • 通过循环计算2的幂次,直到找到等于n或超过n
    • 根据结果输出YES或NO

    2. 关键点分析:

    • 2的幂必须是正整数
    • 使用循环计算2的各个幂次进行比较
    • 当计算值等于n时是2的幂,超过n时不是

    3. 步骤规划:

    • 读取n的值
    • 如果n是负数,直接输出NO
    • 初始化i=0,s=0
    • 循环计算2的幂次直到s≥n:
      • s = 2^i
      • i加1
    • 检查s是否等于n,输出相应结果

    4. 代码对应:

    • cin>>n; → 读取整数n
    • if(n<0) cout<<"NO"; return 0; → 处理负数情况
    • while(s<n) → 循环计算2的幂次
    • s=pow(2,i); i++; → 计算2的i次方并递增指数
    • if(s==n) cout<<"YES"; else cout<<"NO"; → 判断并输出结果
    • 1

    信息

    ID
    4138
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    (无)
    递交数
    91
    已通过
    38
    上传者