#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;
}
P1010 冪次方
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.