8758:2的幂次方表示
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的幂次方表示相关推荐
- 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python
http://noi.openjudge.cn/ch0202/8758/ """ 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python http:/ ...
- 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方
[题目链接] ybt 1208:2的幂次方表示 OpenJudge 2.2 8758:2的幂次方表示 洛谷 P1010 [NOIP1998 普及组] 幂次方 [题目考点] 1. 递归 [解题思路] 递 ...
- mysql 幂运算_BigDecimal 的幂次方运算
public static void main(String[] args){ BigDecimal bg1, bg2; bg1 = new BigDecimal("200000.45&qu ...
- HashMap 的长度为什么是 2 的幂次方?
HashMap 的长度为什么是 2 的幂次方? 为了能让HashMap存取高效,尽量减少碰撞,需要将散列表的数据分配均匀.使用HashMap查询或插入数据时,需要先对数组长度取模运算,index = ...
- 将整数拆分为2的幂次方
任意一个正整数都可以用2的幂次方表示,例如:137=2^7+2^3+2^0,同时约定次方用括号来表示,即a^b=a(b).由此可知,137可表 示:2(7)+2(3)+2(0).进一步:7=2^2+2 ...
- 08、求x的y的幂次方的最后3位数——循环
求x的y的幂次方的最后3位数 求x的y的幂次方的最后3位数 程序代码如下: /*2017年3月12日14:07:05功能:程序求x的y的幂次方的最后3位数*/#include"stdio.h ...
- 快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方! .
将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制数都为 ...
- 【数据结构与算法】之判断一个整数是否是 4 的幂次方的高逼格算法
一.题目要求 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例一: 输入: 16输出: true 示例二: 输入: 5输出: false 进阶: 你能不使用循环 ...
- Java递归例子——求x的y幂次方
假设n的值大于0. 一:源程序: View Code package one; public class RecursionTest { /** * @param args */ public sta ...
最新文章
- Python破解验证码技术,识别率高达百分之八十
- 【解决】联想thinkpad E40 如何禁用触摸板
- Jquery zTree实例
- Windows下基于python3使用word2vec训练中文维基百科语料(一)
- java安全编码实践总结
- 怎么删除结构体数组中的一组数据_数据结构-栈
- 如何在window下杀死进程?
- 芯片,开源,数学,计算机
- “程序员千万不要选全栈开发”
- HTML在日期单元格添加小图片,如何给图片添加上文字、日期和自己名字的小水印呢?...
- python selenium安装
- 干货分享:Neutron的PPT,帮助你理解Neutron的各种细节
- mysql 变量赋值 in_MySQL 存储过程传参数实现where id in(1,2,3,...)实例效果
- Spark解决的问题与体系结构
- ARCGIS 10.2全套资源下载地址
- 很多人问中国网络安全行业怎么样?这篇文看完让你彻底了解中国网络安全行业的全景
- macos设置环境变量path详解
- 线性(欧拉)筛法筛素数表
- 计算机技术排除故障网站有哪些,电脑技术交流之常见故障排除【详解】
- LAMP一键安装包是什么?