P1010 幂次方

来源:互联网 发布:春英广场舞网络一线牵 编辑:程序博客网 时间:2024/06/05 16:36
#include<iostream>#include<cmath>using namespace std;void cg(int n){    if(n==0){//前面五种特判        return ;    }    if(n==1){        cout<<"2(0)";return ;    }    if(n==2){        cout<<2;return ;    }    if(n==3){        cout<<"2+2(0)";return ;    }    if(n==4){        cout<<"2(2)";return ;    }    int x=log2(n);//记录二的次方数    cout<<"2(";//输出前半段    cg(x);//把括号内的数变成符合约定的n的0,2表示    cout<<")";//括号完成    if(n==pow(2,x)){//若N直接是2的次方数就完了,退出        return ;    }    cout<<"+";//若不是,则继续加    cg(n-pow(2,x));//减去前面的,递归转换    return ;}int main(){    int n;    cin>>n;    cg(n);    return 0;}