0
点赞
收藏
分享

微信扫一扫

【算法练习】——2的幂次方表示

两岁时就很帅 2022-03-12 阅读 89
算法c++

2的幂次方表示

题解

#include<bits/stdc++.h>

using namespace std;

void work(int a)
{
    if(a==1){//对特殊情况的处理
        cout << "2(0)";
        return;
    }
    else if(a==2){
        cout << "2";
        return;
    }else{
        int cnt = 0, sum = 1;
        while(1){
            sum *= 2;
            if (sum > a)
            {
                sum = sum / 2;
                if (cnt == 1)//统计乘2的次数==1时直接输出2
                {
                    cout << "2";
                }
                else
                {
                    cout << "2(";
                    work(cnt);
                    cout << ")";
                }
                if (a - sum != 0)//判断是否有剩余
                {
                    cout << "+";
                    work(a - sum);
                }
                return;
            }
            else
            {
                cnt++;
            }
        }
        
    }
    
}
int main()
{
    int n;
    cin >> n;
    work(n);
    return 0;
}
举报

相关推荐

0 条评论