P1010 冪次方

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章