2的幂次方表示
来源:互联网 发布:尚学堂javascript视频 编辑:程序博客网 时间:2024/05/20 20:44
任何一个正整数都可以用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)
137
2(2(2)+2+2(0))+2(2+2(0))+2(0)
思路描述:
将一个数能分成x=2^i+(x-2^i),前者按2的幂次数处理,分解它的指数,后面的数不为0则继续按这个思路分解,形成递归。对于n=0,1,2,3,4时形成递归停止条件。
代码如下:
#include <iostream>#include <string.h>#include <cmath>using namespace std;void f(int n){if(n==4){cout<<"2(2)";}else if(n==3){cout<<"2+2(0)";}else if(n==2){cout<<"2";}else if(n==1){cout<<"2(0)";}else if(n==0){cout<<"0";}else{int compare=1;int a;for(int i=0;i<16;i++)//2的15次为32768{if(n<compare){a=i-1;cout<<"2(";f(a);cout<<")+";f((int)(n-pow(2.0,a)));break;}else if(n==compare){a=i;cout<<"2(";f(a);cout<<")";break;}compare*=2;}}}int main(){int num;cin>>num;f(num);return 0;}
阅读全文
0 0
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示
- 2的幂次方表示题解
- 2的幂次方表示题解
- 2的幂次方表示题解
- 递归之 2的幂次方表示
- openJudge 2的幂次方表示
- 百练:2的幂次方表示
- openjudge :2的幂次方表示
- CCF NOI1074 2的幂次方表示
- 2的幂次方表示()
- NOIP1998复赛:2的幂次方表示
- 递归-2的幂次方表示
- Java:2的幂次方表示
- LeetCode 516. Longest Palindromic Subsequence
- <C++>4.重载函数
- 区间dp
- 深度学习笔记: 稀疏自编码器
- 用@Resource注解来装配属性
- 2的幂次方表示
- 爬取需要登录的网站数据
- 用@Autowired 注解来装配属性、自动装配
- Unreal语音示例:讯飞在线语音听写UE4 Demo
- [USACO08NOV]玩具Toys [洛谷2917] [bzoj1229]
- 5. 数据结构进阶五动态查询
- effective java(5) 之避免创建不必要的对象
- BZOJ 1040: [ZJOI2008]骑士 环套树dp
- 实验一 、Linux操作系统的安装