美文网首页
2的幂次方表示

2的幂次方表示

作者: 翘尾巴 | 来源:发表于2017-02-20 17:42 被阅读0次

    递归练习

    2:2的幂次方表示

    总时间限制:
    1000ms
    内存限制:
    65536kB

    描述
    由此可知,137可表示为:
    2(7)+2(3)+2(0)
    所以最后137可表示为:
    2(2(2)+2+2(0))+2(2+2(0))+2(0)
    又如:
    1315=210+28+2^5+2+1
    所以1315最后可表示为:
    2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

    输入
    一个正整数n(n≤20000)。
    输出
    一行,符合约定的n的0,2表示(在表示中不能有空格)。
    样例输入
    137

    样例输出
    2(2(2)+2+2(0))+2(2+2(0))+2(0)

    #include <iostream>
    using namespace std;
    int GetBit(int n,int i){
        return (n>>i)&1;
    }
    void Print(int n){
        int first=1;
        for(int i=15;i>=0;--i){
            if(GetBit(n,i)){
                if(!first){
                    cout<<"+";
                }else{
                    first=0;
                }
                if(i==0){
                    cout<<"2(0)";
                }
                else if(i==1){
                    cout<<"2";
                }
                else {
                    cout<<"2(";
                    Print(i);
                    cout<<")";
                }
            }
        }
    }
    int main(){
        int n;
        cin>>n;
        Print(n);
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:2的幂次方表示

          本文链接:https://www.haomeiwen.com/subject/vnuewttx.html