【NOIP1998】【Luogu1010】幂次方

problem

solution

codes

#include<iostream>
using namespace std;
void dfs(int dep, int n){
    //if(n<=2){ cout<<n; return; }
    int flag = 0;
    for(int i = dep; i >= 0; i--){
        if(n&(1<<i)){
            if(flag)cout<<"+";
            if(i == 1)cout<<2;
            else if(i==0||i==2)cout<<"2("<<i<<")";//等价于边界条件
            else{
                cout<<"2(";
                dfs(dep,i);
                cout<<")";
            }
            flag = 1;
        }
    }
}
int main(){
    int n;  cin>>n;  dfs(30,n);
    return 0;
}
posted @ 2018-06-06 21:36  gwj1139177410  阅读(165)  评论(0编辑  收藏  举报
选择