2的幂次方表示(递归)
2的幂次方表示
题目链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Problem Description
任何一个正整数都可以用2的幂次方表示。例如:
137=2^7 + 2^3 + 2^0
同时约定方次用括号来表示,即ab可表示为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)
又如:
1315=2^10 + 2^8 + 2^5 + 2 + 1
所以1315最后可表示为:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
Input
一个正整数n(n≤20000)。
Output
一行,符合约定的n的0,2表示(在表示中不能有空格)。
Sample Input
137
Sample Output
2(2(2)+2+2(0))+2(2+2(0))+2(0)
典型的递归算法:
#include<iostream>
using namespace std;void getbit(int n, int index) //表示n*2^(index)
{if(n == 0)return;else if(n == 1){if(index == 0 || index == 2){cout<<"2("<<index<<")";}else if(index==1){cout<<"2";}else{cout<<"2(";getbit(index, 0);cout<<")";}return;}if(n&1 == 1){getbit(n>>1, index+1);cout<<"+";getbit(n&1, index);}else{getbit(n>>1, index+1);}
}int main()
{int n;cin>>n;getbit(n, 0);return 0;
}
方法二:
#include<iostream>
using namespace std;int GetBit(int n,int i)
{return (n>>i)&1;
}void print(int n)
{bool first=true;for(int i=15;i>=0;i--){if(GetBit(n,i)){if(!first)cout<<"+";elsefirst=false;if(i==0)cout<<"2(0)";else if(i==1)cout<<"2";else{cout<<"2(";print(i);cout<<")";}}}
}
int main()
{int n;cin>>n;print(n);return 0;
}
2的幂次方表示(递归)相关推荐
- P1010 幂次方 (递归+分治)
题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进 ...
- Java递归例子——求x的y幂次方
假设n的值大于0. 一:源程序: View Code package one; public class RecursionTest { /** * @param args */ public sta ...
- java 求次方_Java递归例子——求x的y幂次方
假设n的值大于0. 一:源程序: View Code packageone;publicclassRecursionTest {/***@paramargs*/publicstaticvoidmain ...
- 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python
http://noi.openjudge.cn/ch0202/8758/ """ 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python http:/ ...
- 递归——幂次方(洛谷 P1010)
题目选自洛谷P1010 我们知道,二进制数表示的其实就是一个正整数分解成为2的幂次方和! 如3用二进制表示为 11 ,从右到左分别是第0位,第1位-- 则3=2^1+2^0(只要二进制那位是一,就是2 ...
- Vijos P1597 2的幂次方【进制+递归】
描述 任何一个正整数都可以用2的幂次方表示. 同时约定用括号来表示方次,即a的b次,可以表示为a(b). 由此可知,137可以表示为: 2(7)+2(3)+2(0) 进一步: 7=2(2)+2+2(0 ...
- P1010 [NOIP1998 普及组] 幂次方 递归模拟
题目描述 任何一个正整数都可以用 2 的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即 a^b可表示为a(b). 由此可知,137 可表示为 2(7)+2(3)+2(0 ...
- 2的幂次方(快速幂+递归)
题目 2的幂次方表示: 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b).由此可知,137可表示为: 2(7)+2(3)+2(0 ...
- P1010 幂次方 【分治递归】
题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...
最新文章
- STL vector list deque区别与实现
- 智能手机相机测试中的功能测试和性能测试
- 未完全关闭数据库导致ORA-01012: not logged的解决
- Linux线程(三)
- XidianOJ 1099 A simple problem
- vs在linux下的环境搭建,linux下vscode环境配置
- Visual Studio开发工具分配字符数组的问题
- 用DIB位图显示图像
- java中model的意思_开发中model,entity和pojo的区别
- EasyRecovery2022强力数据恢复软件
- 温州商学院计算机二级office考试时间,全国计算机二级最新报名通知,注意报名时间,千万别错过!...
- 自动驾驶技术(3)- 高精度地图解决自动驾驶的功能痛点
- 批量删除新浪微博及自动发布微博
- 搜狗站群排名优化之搜狗批量推送工具
- 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
- 给全国高校本科招办的一封公开信
- ML和PR相关书籍及下载
- 服务器磁带断带修复,易备磁带版:安全合规、功能超群–Windows服务器的磁带备份软件...
- C++ 四种cast 详解
- 《网络运维基础知识手册》
热门文章
- CSDN 编程竞赛五十三期题解
- 布局(1) WP风格滑动布局模仿,类似360手机安全卫士
- 道琼斯指数与成分股关系分析
- mat opencv 修改roi_OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat)...
- 4.1 使用Python获取网页源代码
- (最详细)c语言尾插法头插法代码讲解
- 找工作找到蓝瘦香菇?看牵引力学员如何轻松过万
- python实现京东商品秒杀功能
- 带头结点双向循环 -- 双向链表
- 3D网上商城(3D Oline Mall)