Vijos P1597 2的幂次方【进制+递归】
描述
任何一个正整数都可以用2的幂次方表示。
同时约定用括号来表示方次,即a的b次,可以表示为a(b).
由此可知,137可以表示为:
2(7)+2(3)+2(0)
进一步:
7=2(2)+2+2(0)(2的1次用2表示)
3=2+2(0)
所以137可以表示为:
2(2(2)+2+2(0))+2(2+2(0))+2(0)
按2的次幂降次排列。
格式
输入格式
正整数n(n<=20000)
输出格式
用0,2表示符合约定的n(在表格中不能有空格)。
样例1
样例输入1
137
样例输出1
2(2(2)+2+2(0))+2(2+2(0))+2(0)
限制
1S
来源
NOIP 1998
问题链接: Vijos P1597 2的幂次方
函数convert(int n, int e)实现n的e次方转换为其2的幂次方表示。
进制是常见的话题,递归程序到处可见。
参考链接:CCF NOI1074 2的幂次方表示
AC的C程序如下:
#include <stdio.h> #define BASE 2 void convert(int n, int e)
{ int digit, quotient; if(e == 0) { if(n == 0) ; else if( n == 1) printf("2(0)"); else if(n == 2) printf("2"); else { convert(n / BASE, e+1); digit = n % BASE; if(digit) { printf("+"); convert(digit, e); } } } else { quotient = n / BASE; digit = n % BASE; if(quotient > 0) { convert(quotient, e+1); if(digit) printf("+"); } if(digit) { if(e == 1) printf("2"); else { printf("2("); convert(e, 0); printf(")"); } } }
} int main(void)
{ int n; scanf("%d", &n); convert(n, 0); printf("\n"); return 0;
} /*
12345
2(2(2+2(0))+2(2)+2(0))+2(2(2+2(0))+2(2))+2(2(2)+2(0))+2(2(2))+2(2+2(0))+2(0)
*/
Vijos P1597 2的幂次方【进制+递归】相关推荐
- Vijos P1848 记数问题【进制】
描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1.2.3.4.5.6.7.8.9.10.11 中,数字 1 出现了 4 ...
- Vijos P1772 巧妙填数【进制+置换】
描述 将1,2,⋯,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例. 试求出所有满足条件的三个三位数. 例如:三个三位数192,384,576满足以上条件. 格式 输入格 ...
- P1010 幂次方 【分治递归】
题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...
- 2的幂次方表示(递归)
2的幂次方表示 题目链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Proble ...
- 最清晰的进制转换讲解 - java实现
子曰:知之为不知,不知为不知,太菜也! 进制转换在平时的算法练习题或者项目中都会遇到,下面我们来看一下使用java如何进行进制互相转换. 文章目录 1. 使用内置函数进行进制转换 十进制转换其他进制 ...
- 【了解基本进位制】进制使用说明与学习
进制的概念 进位制全称进位计数制,即在计数的过程中采用进位的方法,数的符号在不同位置所表示的数值有所不同. 常用的进制有二进制.八进制.十进制和十六进制,下面来了解下三个概念. 数码:数值中表示基本数 ...
- 【递归】进制转换、字符串反转、判断回文
文章目录 进制转换--十进制转为任意进制 递归 栈 解法一 解法二 字符串反转 递归 栈 判断回文 递归 双端队列 进制转换--十进制转为任意进制 递归 def toStr(n,base):conve ...
- LeetCode 231. 2的幂 LeetCode 338. 比特位计数(2进制1的个数)
文章目录 1. 题目信息 2. 解题 拓展:求一个数n的2进制有多少个1? LeetCode 338 1. 题目信息 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1:输入: 1 输 ...
- 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
最新文章
- 层次聚类多维度matlab实现_第34集 python机器学习:凝聚聚类
- openstack-mitaka之Telemetry服务(controller安装部署二)
- 关于m_pMainWnd = dlg的错误
- camel java_与Java EE和Camel的轻量级集成
- 春天遇见Apache Hadoop
- pyecharts怎么绘制散点图_PyeCharts绘制各种图形
- 深度剖析JDK动态代理机制
- jvm gc监控分析常用命令
- Kfc点餐系统 小程序
- 每天吃一个核桃好处多多,坚持半年以上,身体会发生五种变化
- CD7388CZ功放IC,4x41W汽车音响功率放大电路,车机标配IC
- js 爱心随鼠标移动 产生 并 消散 (源码)
- 一战成名,用户贷款风险预测 参赛代码与数据集分享
- API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] item_get - 根据ID取商品详情
- 全国一级计算机考证报名网站
- 从草根到百万年薪程序员的十年风雨之路,醍醐灌顶!
- C语言知识点---文件
- vue项目利用uuid生成唯一随机字符串判定临时游客
- 京东宙斯杯应用大赛 推荐宝 刷票记录 有图有真相
- Cesium中用到的图形技术——Computing the horizon occlusion point
热门文章
- 网页游戏为什么容易赚钱?(From:07073)
- movelast对数据记录数有要求吗_客户验厂,电脑坏了,考勤记录数据可以自动生成找回来吗?...
- linux命令界面输入不了密码,如何在 Linux 中不输入密码运行 sudo 命令
- Qt动态映射qobject_cast()
- mysql隔离性和线性隔离_MySQL--事务,隔离性和隔离级别
- LeetCode 235. 二叉搜索树的最近公共祖先(递归)
- Linux安装python3.8时,编译过程中报错Could not build the ssl module!
- 海思3519A配置IP
- 一个简单的线程池设计方案
- 图像分割(一):K-means聚类算法