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 @   爱吃虾滑  阅读(197)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示