YTU.3130: 进阶递归之2的幂次方表示
来源:互联网 发布:app源码模板下载 编辑:程序博客网 时间:2024/05/16 17:34
3130: 进阶递归之2的幂次方表示
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 17 Solved: 15
[Submit][Status][Web Board]
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)
HINT
考虑递归出口条件,考虑2的组成部分可以分为哪几种!
AC代码:
#include<stdio.h>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
- YTU.3130: 进阶递归之2的幂次方表示
- 进阶递归之2的幂次方表示
- 递归之 2的幂次方表示
- C++递归算法之2的幂次方表示
- 递归-2的幂次方表示
- NOI2.2基本算法之递归和自调用函数 2的幂次方表示 分析
- 8758:2的幂次方表示(2.2基本算法之递归和自调用函数)
- 递归算法:全排列、2的幂次方表示
- YTU.3131: 进阶递归之简单的整数划分问题
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- YTU.3129: 进阶递归之全排列
- YTU.3133: 进阶递归之引爆炸弹
- 2的幂次方表示题解
- Koa、Express Web单元测试
- pulltorefresh_demo
- nginx基本配置与参数说明
- Unity3D协程介绍 以及 使用
- 关于OKhttp的拦截器
- YTU.3130: 进阶递归之2的幂次方表示
- CentOS7使用yum安装mysql
- JAVA设计模式之 抽象工厂模式【Abstract Factory Pattern】
- valgrind callgrind性能分析
- java反射机制
- 工作上常用的tips
- Kafka基础
- opencv学习中——对视频的处理
- java 8种基本类型、3种引用类型、 特殊字符、算术运算符++ 、--、instanceof