noip1998 幂方分解 (模拟)
来源:互联网 发布:三维电气设计软件 编辑:程序博客网 时间:2024/05/18 00:39
A1116. 幂方分解
时间限制:1.0s 内存限制:256.0MB
总提交次数:445 AC次数:288 平均分:71.82
将本题分享到:
查看未格式化的试题 提交 试题讨论
试题来源
NOIP1998 普及组
问题描述
任何一个正整数都可以用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<cstdio>using namespace std;inline void resolve(int x){ int i,j,k; for(i=20;i>=0;i--) { k=1<<i; if((~x)&k)continue; if(i==1)printf("2"); if(i==0)printf("2(0)"); if(i>1) { printf("2("); resolve(i); printf(")"); } x-=k; if(x>0)printf("+"); }}int main(){ int n; scanf("%d",&n); resolve(n); return 0;}
0 0
- noip1998 幂方分解 (模拟)
- noip1998 进位制表 (模拟)
- 幂方分解(递归)
- 算法训练 幂方分解(递归)
- 蓝桥杯 幂方分解(递归)
- 幂方分解
- 幂方分解
- 蓝桥杯 幂方分解
- 幂方分解 (vip)
- loj幂方分解
- 幂方分解
- 幂方分解
- NOIP1998 幂次方
- NOIP1998普及组复赛第二题 贰的幂方 解题报告
- [ALGO-12] 幂方分解
- Tsinsen A1116 幂方分解
- 算法训练 幂方分解
- 算法训练 幂方分解
- MongoDB之索引
- JAVA随笔篇二(深入分析JAVA简单类型、String和对象的值传递和引用传递)
- 深入浅出TCP协议的2MSL TIME_WAIT状态
- C#基数样条曲线的模拟实现(对应Graphics的DrawCurve)
- IOCP知识点及疑惑
- noip1998 幂方分解 (模拟)
- 树-堆结构练习——合并果子之哈夫曼树
- 前端设计之输入框提示列表的效果
- 项目问题反馈:对后台查询的结果列表进行处理:计算平均值,改变小数点位数
- 多尺寸屏幕的自动适配 AutoLayout (纯代码方式)
- jquery validate使用和扩展规则
- 矩阵树定理
- HDOJ Choose the best route 2680【最短路Dijkstra+反向建图】
- 学生信息管理系统总结