描述

任何一个正整数都可以用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的幂次方【进制+递归】相关推荐

  1. Vijos P1848 记数问题【进制】

    描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1.2.3.4.5.6.7.8.9.10.11 中,数字 1 出现了 4 ...

  2. Vijos P1772 巧妙填数【进制+置换】

    描述 将1,2,⋯,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例. 试求出所有满足条件的三个三位数. 例如:三个三位数192,384,576满足以上条件. 格式 输入格 ...

  3. P1010 幂次方 【分治递归】

    题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...

  4. 2的幂次方表示(递归)

    2的幂次方表示 题目链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Proble ...

  5. 最清晰的进制转换讲解 - java实现

    子曰:知之为不知,不知为不知,太菜也! 进制转换在平时的算法练习题或者项目中都会遇到,下面我们来看一下使用java如何进行进制互相转换. 文章目录 1. 使用内置函数进行进制转换 十进制转换其他进制 ...

  6. 【了解基本进位制】进制使用说明与学习

    进制的概念 进位制全称进位计数制,即在计数的过程中采用进位的方法,数的符号在不同位置所表示的数值有所不同. 常用的进制有二进制.八进制.十进制和十六进制,下面来了解下三个概念. 数码:数值中表示基本数 ...

  7. 【递归】进制转换、字符串反转、判断回文

    文章目录 进制转换--十进制转为任意进制 递归 栈 解法一 解法二 字符串反转 递归 栈 判断回文 递归 双端队列 进制转换--十进制转为任意进制 递归 def toStr(n,base):conve ...

  8. LeetCode 231. 2的幂 LeetCode 338. 比特位计数(2进制1的个数)

    文章目录 1. 题目信息 2. 解题 拓展:求一个数n的2进制有多少个1? LeetCode 338 1. 题目信息 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1:输入: 1 输 ...

  9. 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. 层次聚类多维度matlab实现_第34集 python机器学习:凝聚聚类
  2. openstack-mitaka之Telemetry服务(controller安装部署二)
  3. 关于m_pMainWnd = dlg的错误
  4. camel java_与Java EE和Camel的轻量级集成
  5. 春天遇见Apache Hadoop
  6. pyecharts怎么绘制散点图_PyeCharts绘制各种图形
  7. 深度剖析JDK动态代理机制
  8. jvm gc监控分析常用命令
  9. Kfc点餐系统 小程序
  10. 每天吃一个核桃好处多多,坚持半年以上,身体会发生五种变化
  11. CD7388CZ功放IC,4x41W汽车音响功率放大电路,车机标配IC
  12. js 爱心随鼠标移动 产生 并 消散 (源码)
  13. 一战成名,用户贷款风险预测 参赛代码与数据集分享
  14. API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] item_get - 根据ID取商品详情
  15. 全国一级计算机考证报名网站
  16. 从草根到百万年薪程序员的十年风雨之路,醍醐灌顶!
  17. C语言知识点---文件
  18. vue项目利用uuid生成唯一随机字符串判定临时游客
  19. 京东宙斯杯应用大赛 推荐宝 刷票记录 有图有真相
  20. Cesium中用到的图形技术——Computing the horizon occlusion point

热门文章

  1. 网页游戏为什么容易赚钱?(From:07073)
  2. movelast对数据记录数有要求吗_客户验厂,电脑坏了,考勤记录数据可以自动生成找回来吗?...
  3. linux命令界面输入不了密码,如何在 Linux 中不输入密码运行 sudo 命令
  4. Qt动态映射qobject_cast()
  5. mysql隔离性和线性隔离_MySQL--事务,隔离性和隔离级别
  6. LeetCode 235. 二叉搜索树的最近公共祖先(递归)
  7. Linux安装python3.8时,编译过程中报错Could not build the ssl module!
  8. 海思3519A配置IP
  9. 一个简单的线程池设计方案
  10. 图像分割(一):K-means聚类算法