题解 | 2的幂次方

2的幂次方

https://www.nowcoder.com/practice/7cf7b0706d7e4b439481f53e5fdac6e7

#include <bits/stdc++.h>
using namespace std;
int n;

void func(int n, int p){ // 正在处理n的二进制的第p位
    if(n == 0) return;
    int res = n; // res为余数
    res = res % 2;
    n /= 2;
    func(n, p + 1); //先处理高位,再处理当前位
    //当n为0时,当前循环前面没有东西了,不需要'+',只需处理余数
    //当余数为0时,后面没有东西了,不需要'+'
    if(n != 0 && res != 0) cout << '+';
    if(res == 1){ //还有余数,当 p > 2 时可以递归推出
        if(p == 0) cout << "2(0)";
        else if(p == 1) cout << '2';
        else if(p == 2) cout << "2(2)";
        else{
            cout << "2(";
            func(p, 0);
            cout <<')';
        }
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> n;
    func(n, 0);

    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-15 10:59
已编辑
爱写代码的菜code...:哎,自己当时拿到字节offer的时候也在感叹终于拿到了,自己当时最想去的企业就是字节,结果还是阴差阳错去了鹅厂。祝uu一切顺利!!!
点赞 评论 收藏
分享
牛马43373018...:这人真懂什么叫熵吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务