问题标题: 酷町堂:2183 数的2的表示法

0
0
已解决
高梓荣
高梓荣
新手天翼
新手天翼

2183   数的2的表示法经验值:1200

题目描述 Description

每个正整数都可以用2的次方来表示。2(n)表示2的n次方,例如2(7)表示2的7次方。例如:137=128+8+1。由此可知,137可表示为:2(7)+2(3)+2(0)。
括号中的7 ,3还可以用2的次方来表示
137应该表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)

输入描述 Input Description

一个正整数n(n<=20000)。

输出描述 Output Description

输出一行,符合约定的n的2的次方表示(无空格)。

样例输入 Sample Input

1315

样例输出 Sample Output

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

数据范围及提示 Data Size & Hint

n<=20000

 

给个思路谢谢


0
已采纳
徐紫尘
徐紫尘
高级光能
高级光能

1.
这一题要看准数据范围,n最大20000,而20000大概是2的15次方。保险起见,大一点。用y记录2的几次方。
2.
如果n小于2的i次方,则n里面就一定有2的i-1次方。当然,y存储的是第一次的i-1的数据
3.
如果y=0,根据题目意思,输出2(0)
4.
如果y=1,根据题意,输出2
5.
如果y>1,则y可以再次进行分解
6.
因为n不一定是2的次方数,所以还要考虑剩下一点的情况
7.
输出加号,递归,对n-pow(2,y),也就是还剩下一点进行分解

另附网址

我要回答