8758:2的幂次方表示

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms
内存限制: 
65536kB
描述

任何一个正整数都可以用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)

输入
一个正整数n(n≤20000)。
输出
一行,符合约定的n的0,2表示(在表示中不能有空格)。
样例输入
137
样例输出
2(2(2)+2+2(0))+2(2+2(0))+2(0)
来源
NOIP1998复赛 普及组 第一题

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 void work(int n)
 6 {
 7     if(n==1)
 8     {
 9         printf("2(0)");
10         return;
11     }//初始判断条件,如果n为1或2则直接输出
12     else if(n==2)
13     {
14         printf("2");// 2的一次方
15         return;
16     }
17      else
18     {
19         int j=1,i=0;//j每次乘2,如果大于了n就分解结束,
20                     //i为当前次数(指数)
21         do
22         {
23             j=2*j;
24             if(j>n)
25             {
26                 j/=2;//回退到当j<n时
27                 if(i==1)//这步非常重要,确定是否需要继续 2()
28                     printf("2");
29                 else
30                 {
31                     printf("2(");
32                     work(i);
33                     printf(")");
34                 }
35                 if(n-j!=0)
36                 { //如果n分解之后还有剩余的数,那么继续分解
37                     printf("+");
38                  work(n-j);
39                 }
40                 return;
41             }
42             else
43             i++;
44         } while(1);
45     }
46 }
47 int main()
48 {
49     int n;
50     scanf("%d",&n);
51     work(n);
52 }

点击此处看答案

转载于:https://www.cnblogs.com/zwfymqz/p/6542776.html

8758:2的幂次方表示相关推荐

  1. 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python

    http://noi.openjudge.cn/ch0202/8758/ """ 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python http:/ ...

  2. 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方

    [题目链接] ybt 1208:2的幂次方表示 OpenJudge 2.2 8758:2的幂次方表示 洛谷 P1010 [NOIP1998 普及组] 幂次方 [题目考点] 1. 递归 [解题思路] 递 ...

  3. mysql 幂运算_BigDecimal 的幂次方运算

    public static void main(String[] args){ BigDecimal bg1, bg2; bg1 = new BigDecimal("200000.45&qu ...

  4. HashMap 的长度为什么是 2 的幂次方?

    HashMap 的长度为什么是 2 的幂次方? 为了能让HashMap存取高效,尽量减少碰撞,需要将散列表的数据分配均匀.使用HashMap查询或插入数据时,需要先对数组长度取模运算,index = ...

  5. 将整数拆分为2的幂次方

    任意一个正整数都可以用2的幂次方表示,例如:137=2^7+2^3+2^0,同时约定次方用括号来表示,即a^b=a(b).由此可知,137可表 示:2(7)+2(3)+2(0).进一步:7=2^2+2 ...

  6. 08、求x的y的幂次方的最后3位数——循环

    求x的y的幂次方的最后3位数 求x的y的幂次方的最后3位数 程序代码如下: /*2017年3月12日14:07:05功能:程序求x的y的幂次方的最后3位数*/#include"stdio.h ...

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

    将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制数都为 ...

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

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

  9. Java递归例子——求x的y幂次方

    假设n的值大于0. 一:源程序: View Code package one; public class RecursionTest { /** * @param args */ public sta ...

最新文章

  1. Python破解验证码技术,识别率高达百分之八十
  2. 【解决】联想thinkpad E40 如何禁用触摸板
  3. Jquery zTree实例
  4. Windows下基于python3使用word2vec训练中文维基百科语料(一)
  5. java安全编码实践总结
  6. 怎么删除结构体数组中的一组数据_数据结构-栈
  7. 如何在window下杀死进程?
  8. 芯片,开源,数学,计算机
  9. “程序员千万不要选全栈开发”
  10. HTML在日期单元格添加小图片,如何给图片添加上文字、日期和自己名字的小水印呢?...
  11. python selenium安装
  12. 干货分享:Neutron的PPT,帮助你理解Neutron的各种细节
  13. mysql 变量赋值 in_MySQL 存储过程传参数实现where id in(1,2,3,...)实例效果
  14. Spark解决的问题与体系结构
  15. ARCGIS 10.2全套资源下载地址
  16. 很多人问中国网络安全行业怎么样?这篇文看完让你彻底了解中国网络安全行业的全景
  17. macos设置环境变量path详解
  18. 线性(欧拉)筛法筛素数表
  19. 计算机技术排除故障网站有哪些,电脑技术交流之常见故障排除【详解】
  20. LAMP一键安装包是什么?

热门文章

  1. [转载]织梦后台添加新变量-内容模型
  2. 前端学习 -- HtmlCss -- 框架集
  3. 由铁路订票系统联想到的
  4. 分享30个最佳 jQuery Lightbox 效果插件
  5. 博客园T恤内部泄漏版(附图)
  6. C# 2.0中泛型编程初级入门教程
  7. IntersectionObserve初试
  8. 分布式文件系统—HDFS—shell命令
  9. kotlin学习笔记——枚举、封闭类
  10. 时间管理-暗世界-时间碎片