进阶递归之2的幂次方表示
来源:互联网 发布:三星网络电视怎么看 编辑:程序博客网 时间:2024/06/05 07:13
Do more with less
进阶递归之2的幂次方表示 Time Limit: 1 Sec Memory Limit: 64 MB
Description
任何一个正整数都可以用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)
Input
一个正整数n(n≤20000)。
Output
一行,符合约定的n的0,2表示(在表示中不能有空格)。
Sample Input
137
Sample Output
2(2(2)+2+2(0))+2(2+2(0))+2(0)
思路
把一个数N每次都分为 2^n + m 的形式 在将n,m分别递归求解。
#include<cstdio>int num;void fun(int n){ int i = 0; int sum = 1; if(n == 0) return ; if(n == 1) { printf("2(0)"); // 1是2的零次方 return ; } if(n == 2) { printf("2"); // 2的一次方 return ; } while(2*sum <= n) { i ++; sum = 2*sum; } printf("2"); if(i != 1) { printf("("); fun(i); printf(")"); } if(n - sum != 0) printf("+"); fun(n - sum);}int main(){ int n; num = 0; scanf("%d",&n); if(n == 0) { printf("%d",n); return 0; } fun(n); return 0;}
0 0
- 进阶递归之2的幂次方表示
- YTU.3130: 进阶递归之2的幂次方表示
- 递归之 2的幂次方表示
- C++递归算法之2的幂次方表示
- 递归-2的幂次方表示
- NOI2.2基本算法之递归和自调用函数 2的幂次方表示 分析
- 8758:2的幂次方表示(2.2基本算法之递归和自调用函数)
- 递归算法:全排列、2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示题解
- 2的幂次方表示题解
- 2的幂次方表示题解
- openJudge 2的幂次方表示
- 贪吃蛇智能版(中级)
- Python3 面向对象
- java中Port端口是怎么回事?有什么用?
- getContextPath、getServletPath、getRequestURI的区别
- 2016年最新云计算视频教程hadoop大数据实战开发
- 进阶递归之2的幂次方表示
- ACM_HDU 2033 人见人爱A+B
- java中localhost是怎么回事?干什么用的?
- OSG中的材质Material
- <操作系统:精髓与设计原理>分布式系统
- 什么是“大规模机器学习”
- linux驱动:[2]字符设备驱动memdev(cdev结构解析)
- LeetCode #16 3Sum Closest
- getAllNetworkInfo()过时解决方式