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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)