试题 算法训练 幂方分解

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  任何一个正整数都可以用2的幂次方表示。例如:
  137=27+23+20
  同时约定方次用括号来表示,即ab 可表示为a(b)。
  由此可知,137可表示为:
  2(7)+2(3)+2(0)
  进一步:7= 22+2+20 (21用2表示)
  3=2+20
  所以最后137可表示为:
  2(2(2)+2+2(0))+2(2+2(0))+2(0)
  又如:
  1315=210 +28 +25 +2+1
  所以1315最后可表示为:
  2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
输入格式
  输入包含一个正整数N(N<=20000),为要求分解的整数。
输出格式
  程序输出包含一行字符串,为符合约定的n的0,2表示(在表示中不能有空格)

提示:这道题与有一道2n次幂的表示差不多是一样的,我在那篇上面也写过思路了,那就再写一遍吧(有兴趣的也可以看看,和这道题几乎一样)。

思路:这道题用递归需要做,但是需要判断几个点,比如括号、加号和运算中不会出现比2大的数字,一对括号中最大所出现的值为7,2的平方、本身和零次方,所以当出现比7还要大的数时就需要一对括号了,括号外加号的判断方法是只要所输入的数减去前面以及进行运算的数不为零就行,毕竟当全部表达完成之后就不需要进行运算了,也就没有加号了,这道题可以用数字0、1、2来表示计算,递归计算起来就很方便,直接根据没次递归所给数判断值为多少就行。

代码如下:

#include<iostream>
#include<cmath>
using namespace std;
void pow2n(int i){int x=0,y,y1=i;if(y1>2){cout<<"2(";}while(i>0){if(pow(2,x)>i){if((x-1)<=2 && (x-1)>=0){if((x-1)==1){cout<<"2";} else if((x-1)==2 || (x-1)==0){cout<<"2("<<x-1<<")";}}else{pow2n(x-1);}i=i-pow(2,x-1);if(i!=0){cout<<"+";}x=-1; } else if(pow(2,x)==i){if(x<=2 && x>=0){if(x==1){cout<<"2";} else if(x==2 || x==0){cout<<"2("<<x<<")";}}else{pow2n(x);}i=i-pow(2,x);x=-1; }x++;}if(y1>2){cout<<")";}
}
int main(){int n,i=0,j,k;cin>>n;while(n>0){j=pow(2,i);if(j>n){n=n-pow(2,i-1);if((i-1)==1 || (i-1)==2){if((i-1)==1){cout<<"2";}if((i-1)==2){cout<<"2(2)";} }else{pow2n(i-1);}i=-1;cout<<"+";}else if(j==n){n=n-pow(2,i);if(i==0){cout<<"2(0)";}else{pow2n(i);}i=-1;}i++;}
}

蓝桥杯试题 算法训练 幂方分解相关推荐

  1. 蓝桥杯 ALGO-12 算法训练 幂方分解

    问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步 ...

  2. [Java] 蓝桥杯ALGO-12 算法训练 幂方分解

    问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步 ...

  3. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  4. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  5. 蓝桥杯 试题 算法训练 筛选号码 Java

    蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...

  6. 蓝桥杯 试题 算法训练 无聊的逗

    蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...

  7. 蓝桥杯试题 算法训练 绘制地图

    蓝桥杯试题 算法训练 绘制地图 问题描述 最近,WYF正准备参观他的点卡工厂.WYF集团的经理氰垃圾需要帮助WYF设计参"观"路线.现在,氰垃圾知道一下几件事情: 1.WYF的点卡 ...

  8. 蓝桥杯试题 算法训练 Have You Ever Heard About the Word?

    试题 算法训练 Have You Ever Heard About the Word? 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 一个字符串的子串是该字符串的一段连续子序列,如 ...

  9. 蓝桥杯试题 算法训练 印章

    试题 算法训练 印章 C/C++ 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ...

最新文章

  1. spark-submit提交python脚本过程记录
  2. java创建线程的两种方法区别
  3. 5 秒创建 k8s 集群[转]
  4. HDU 5274 Dylans loves tree(树链剖分)
  5. android内核编译 me525,摩托罗拉DEFY(ME525)刷Android 2.3.4变砖后的解决方法
  6. mongodb之配置
  7. QLineEdit限制数据类型——只能输入浮点型数
  8. 对于频繁的写数据处理方式
  9. html排序图标,css实现排序升降图标
  10. 老板:再用Log4j就收拾东西回家吧!
  11. WLS_Oracle Weblogic服务器生命周期(案例)
  12. 运用AARRR模型对App进行系统性的数据分析
  13. 【渝粤教育】国家开放大学2018年春季 0314-21T兽医基础 参考试题
  14. Hadoop I/O
  15. EOS钱包、账号及其关系详解
  16. java根据身份证号判断当前年龄
  17. 准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值)
  18. jsb is not in the sudoers file. This incident will be reported.
  19. 给 perl hacker 们看的(ReShip)
  20. Selenium PO模式实现

热门文章

  1. 《春夜洛城闻笛 / 春夜洛阳城闻笛》古诗鉴赏
  2. 最新!中国内地大学ESI排名出炉:318所高校上榜,国科大、清华、北大位居前三,深圳大学、南昌大学、青岛大学表现出色!...
  3. 如何把电脑中mkv视频文件刻录成蓝光视频光盘
  4. 小程序:微信小程序打包成APP
  5. Origin 画箱图
  6. Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接
  7. 模拟黑客思维对网站进行CC压力测试!(二)
  8. 冶炼锻造(Smithing)
  9. 读取mnist数据集方法大全(train-images-idx3-ubyte.gz,train-labels.idx1-ubyte等)(python读取gzip文件)
  10. C++ primer (中文版-第五版 )练习题答案