acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 题解

    用一个函数不停/2来判断是否是2的整数次幂,这里借用一下log2(n)函数。 代码如下:

    userId_undefined

    复仇者_THUNDER

    荣耀黄金
    28阅读
    0回复
    0点赞
  • 题解

    前置知识:位运算,builtin函数 一个数取相反数其实就是取这个数的反码然后+1,稍微推理一下我们会发现 n & -n 就可以取到这个数的最低位,如果这个数为 nnn 显然就代表 nnn 能表示为 222 的正整数次幂. __builtin_ctz(n) 可以返回 nnn 最右边有多少个连续的 000,于是可以得到以下代码

    userId_undefined

    复仇者_帅童

    尊贵铂金
    11阅读
    0回复
    0点赞
  • 【官方题解】二进制

    【题目大意】 给你个整数 nnn ,如果 log2nlog_2nlog2 n为整数并且 log2(log2n)log_2(log_2n)log2 (log2 n) 为整数输出perfect,如果 log2nlog_2nlog2 n 为整数但是 log2(log2n)log_2(log_2n)log2 (log2 n) 不是整数输出good,如果 log2nlog_2nlog2 n 不是整数输出general。 SUBTASK: 100% 【算法分析】 本题考查对二进制的理解。 我们发现如果 log2nlog_2nlog2 n 为整数,那么n的二进制肯定只有一位为 111 ,而 log2nlog_2nlog2 n 实际就是 n的二进制位数−1n的二进制位数-1n的二进制位数−1。 时间复杂度 O(logn) 。 【参考代码】

    userId_undefined

    重生之我是菜狗

    荣耀黄金
    3阅读
    0回复
    0点赞
首页