幂方分解(递归)
来源:互联网 发布:amt emulator mac 编辑:程序博客网 时间:2024/05/18 01:34
算法训练 幂方分解
时间限制: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)
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表示(在表示中不能有空格)
# include <stdio.h>int c[16]={1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768};void f(int n){ if (n==0) { printf("2(0)"); return ; } if (n==1) { printf("2"); return ; } if (n==2) { printf("2(2)"); return ; }} int fenJie(int n){ int h; int i; for (i=1; i<=15; i++) { if (n<c[i]) { h = i; break; } } return h-1; }void digui(int n){ int t; while (n) { t = fenJie(n); if (t > 2) { printf("2("); digui(t); } f(t); n -= c[t]; if (n!=0 && t<=2) printf("+"); if (t > 2) { if (n==0) printf(")"); else printf(")+"); } } }int main(){ int t; int n; scanf("%d", &n); digui(n); return 0;}
0 0
- 幂方分解(递归)
- 算法训练 幂方分解(递归)
- 蓝桥杯 幂方分解(递归)
- 蓝桥杯-幂方分解-递归-Java
- noip1998 幂方分解 (模拟)
- 幂方分解
- 幂方分解
- 蓝桥杯 幂方分解
- 幂方分解 (vip)
- loj幂方分解
- 幂方分解
- 幂方分解
- 整数分解(递归)
- 分解质因数(递归)
- 数值分解(递归)
- [ALGO-12] 幂方分解
- Tsinsen A1116 幂方分解
- 算法训练 幂方分解
- STL中优先队列的使用
- 装箱问题
- 校门外的树(水题)
- 开心的金明(01背包)
- 入学考试
- 幂方分解(递归)
- Android Studio下集成ShareSDK
- 瓷砖铺放(简单的深搜)
- 集合运算
- 纪念品分组 (贪心)
- 一,二,三,四。
- Sine之舞(递归)
- Twidere 开发者:95后的宅里奥
- python进阶五_类(二)