任意一个正整数都可以用2的幂次方表示,例如:137=2^7+2^3+2^0,同时约定次方用括号来表示,即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的1次用2表示,按2的次幂降次排序

  这个题目设计到递归、位运算,虽然代码很简单,但是思路还是值得思考一下。

#include <stdio.h>
int DG(int n){int i,a[16],p=0;for (i=0;n>0;n>>=1,i++) a[i]=n&1;for (i--;i>1;i--)if (a[i]&1){if (p) printf("+");printf("2(");DG(i);printf(")");p=1;}if (a[1]&1){if (p) printf("+");printf("2");p=1;}if (a[0]&1){if (p) printf("+");printf("2(0)");}return 0;}
int main()
{int n;scanf("%d",&n);DG(n);return 0;
} 

转载于:https://www.cnblogs.com/wangaohui/archive/2013/04/14/3019723.html

将整数拆分为2的幂次方相关推荐

  1. 【数据结构与算法】之判断一个整数是否是 4 的幂次方的高逼格算法

    一.题目要求 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例一: 输入: 16输出: true 示例二: 输入: 5输出: false 进阶: 你能不使用循环 ...

  2. php判断给定的整数是否是2的幂_判断整数是否是2的幂次方

    1. 看到这个问题,直接的想法估计是对这个数直接判断,如果这个数是2的n次方幂,那可以将这个数先对2取模为0,再对2整除,再对2取模,一直到这个数最后为2:如果不能这样做,那么这个整数就不是2的n次方 ...

  3. 华为机试题【9】-整数分割为2的幂次

    题目描述: 一个整数可以拆分为2的幂的和,例如: 7 = 1+ 2 + 4 7 = 1 + 2 + 2 + 2 7 = 1 + 1 + 1 + 4 7 = 1 + 1 + 1 + 2 + 2 7 = ...

  4. 判断 2 的幂次方、3 的幂次方、4 的幂次方

    1. 2 的幂次方 给你一个整数 n,请你判断该整数是否是 2 的幂次方.如果是,返回 true :否则,返回 false . 如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂 ...

  5. c语言整数幂怎么编译_c语言编程中如何输入幂次方

    展开全部 1.头文件:#include 2.原型: double pow(double x, double y); pow() 函数用来求 x 的 y 次幂(次方e69da5e6ba903231313 ...

  6. python 幂_python 幂次方

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python3获取的是浮点数(小数2.5)print(52)(整除-- 地板除) ...

  7. 【洛谷】【P1010题解】 [NOIP1998 普及组] 幂次方

    题目描述 描述:输入一个整数n,1 <= n < 2 * 10^4 举例: 1315 答案: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) ...

  8. 快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!

    将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为 ...

  9. C语言编程判断是否为2的幂,C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个 ...

最新文章

  1. Comparative assessment of long-read error correction software applied to Nanopore RNA-sequencing dat
  2. 汇编语言随笔(14)-直接定址表、检测点16和实验16
  3. CentOS下安装semanage
  4. usbserials
  5. android 从assets和res中读取文件(转)
  6. Pytorch采坑记录:DDP加载之前的checkpoint后loss上升(metric下降)
  7. 《第9章 循环结构进阶》
  8. 利用三维模型生成点云总结
  9. mysql集成函数_mysql的内置函数
  10. 那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)
  11. 《剑指offer》面试题17——合并两个有序的链表(C++):
  12. OSPF中 HELL0包解析
  13. linux的vim替换字符串,Linux Vim替换字符串的一些方法小结
  14. 7.过渡案例:①进度条 ②小米图标翻转(父盒子一定要加初始值!!!)
  15. android 支付宝第三方支付
  16. 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计 汉语言文学设计题材网页
  17. 计算机能力提升选网络研修,教师计算机能力提升个人研修计划
  18. matlab如何镜像处理图片,matlab实现图像镜像
  19. 手机投屏电脑,无需第三方软件,鼠标控制手机
  20. 一些Pixel手机的使用技巧

热门文章

  1. React是如何在后台运行的
  2. Hadoop集群搭建(四:Zookeeper环境安装)
  3. 1048 Find Coins(散列解法)
  4. (C++)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
  5. CNCF案例研究:奇虎360
  6. ORA-01919: role 'PLUSTRACE' does not exist
  7. [原]对Linux环境下任务调度一点认识
  8. asp.net获取页面url参数值的实现代码实例
  9. AD ---- 活动目录的日常管理操作
  10. php pkcs 1格式的公钥,解说--2--微信支付RSA公钥PKCS1格式转化成PKCS8格式的公钥