[NOIP1998 普及組] 冪次方
阿新 • • 發佈:2022-04-04
題目連結 https://www.luogu.com.cn/problem/P1010
看到這麼多括號花裡胡哨的就不想做。。。但其實還是個比較簡單的題的。
思路放程式碼裡吧。
放AC程式碼
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 void dfs(int x)//x為需要分解的數 5 { 6 int y; 7 if(x==0) return; 8 for(int i=0;i<=15;i++){ 9 y=i;//i表示剛好超過x的2的i次冪 10 if(pow(2,i)>x){//當2的i次冪第一次比x大時 11 y--; 12 break;//跳出 13 } 14 } 15 if(y==0) cout<<"2(0)";//0次冪 16 if(y==1) cout<<"2";//1次冪 17 if(y>1){ 18 cout<<"2("; 19 dfs(y);//如果冪數大於1,遞迴冪數(y) 20 cout<<")"; 21 } 22 if(x!=pow(2,y)){//如果n!=2的y次冪時 23 cout<<"+"; 24 dfs(x-pow(2,y));//遞迴剩餘的 25 } 26 } 27 int main() 28 { 29 cin>>n; 30 dfs(n); 31 return 0; 32 }