1 条题解
-
0
自动搬运
来自洛谷,原作者为

xcc
**搬运于
2025-08-24 21:19:54,当前版本为作者最后更新于2018-09-18 20:56:53,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
看了下面大佬们的题解,有点复杂,本蒟蒻来一发简单的
主要思路是递归/分治,因为分解出的指数还要继续分解,是重复的但规模更小的问题
关于求,暴力枚举即可,数据很小
#include<iostream> #include<cmath> using namespace std; int a; void fff(int x) { for(int i=14;i>=0;i--) //两万的数据最多是2(14) { if(pow(2,i)<=x){ //pow(n,m)在cmath库中,返回n^m;枚举出第一个幂次方 if(i==1) cout<<"2"; //2(1)不用再往后分解了且2^1输出为2,单独出来 else if(i==0) cout<<"2(0)"; //2(0)也不用再往后分解了,单独出来 else{ //若i>1则继续分解指数i cout<<"2("; fff(i); cout<<")"; } x-=pow(2,i); //继续循环分解余下的 if(x!=0) cout<<"+"; //加号处理的最简单方法:若此x还没分解完,则后面还有项,所以输出一个+号 } } } int main() { cin>>a; fff(a); return 0; }
- 1
信息
- ID
- 12
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者