美文网首页
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