蓝桥杯——二的次幂表示

原创 2015年07月07日 22:05:44
问题描述
  任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。
  将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0
  现在约定幂次用括号来表示,即a^b表示为a(b)
  此时,137可表示为:2(7)+2(3)+2(0)
  进一步:7=2^2+2+2^0 (2^1用2表示)
  3=2+2^0 
  所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)
  又如:1315=2^10+2^8+2^5+2+1
  所以1315最后可表示为:
  2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
输入格式
  正整数(1<=n<=20000)
输出格式
  符合约定的n的0,2表示(在表示中不能有空格)
样例输入
137
样例输出
2(2(2)+2+2(0))+2(2+2(0))+2(0)
样例输入
1315
样例输出
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

提示
用递归实现会比较简单,可以一边递归一边输出

主要算法:为了便于描述,以137为例。137的2进制表示为10001001.将2进制数据存在数组a中,即a[7]=1,a[6]=0,a[5]=0,.........a[0]=1.此时,a[i]对应于2(i).对于a[i]=1,如果i=0,输出2(0)(或者+2(0)),如果i=1,输出2(或者+2),如果i=2,输出2(2)(或者+2(2)).其余值,对i进行递归调用,即将i分解成0,2串。如果a[i]=0,忽略不处理。此外,用变量flag来控制是否输出+.



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

蓝桥杯 ——2的次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^...

蓝桥杯-2的次幂表示(java)

算法训练 2的次幂表示 时间限制:1.0s 内存限制:512.0MB 问题描述   任何一个正整数都可以用2进制表示,例如...

蓝桥杯-算法训练-2的次幂表示

算法训练 2的次幂表示                                       ...

蓝桥杯 2的次幂表示 解题报告(递归)

题目及思路: 代码: import java.util.Scanner; public class Main { public static void main(String[] arg...
  • o0Roy
  • o0Roy
  • 2016-12-21 20:45
  • 153

蓝桥杯:算法训练 2的次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+...

蓝桥杯训练:2的次幂表示(递归)

代码:ALGO-95题目名称:2的次幂表示关键字:上传日期:2014-12-29页面链接:http://lx.lanqiao.org/problem.page?gpid=T235资源限制:时间限制:1...

蓝桥杯 算法训练 2的次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3...
  • wr132
  • wr132
  • 2015-01-25 20:17
  • 987

蓝桥杯: 算法训练 2的次幂表示

二进制输出

2的次幂表示 蓝桥杯

问题描述   任何一个正整数都可以用2进制表示, 例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2...

2的次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)