P1010 [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;//y表示刚好超过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)){//如果x!=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 }

 

posted @ 2022-04-04 21:50  爱吃虾滑  阅读(188)  评论(0编辑  收藏  举报