1. 程式人生 > 其它 >[NOIP1998 普及組] 冪次方

[NOIP1998 普及組] 冪次方

題目連結 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 }