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的幂次方表示(递归)相关推荐

  1. P1010 幂次方 (递归+分治)

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

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

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

  3. java 求次方_Java递归例子——求x的y幂次方

    假设n的值大于0. 一:源程序: View Code packageone;publicclassRecursionTest {/***@paramargs*/publicstaticvoidmain ...

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

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

  5. 递归——幂次方(洛谷 P1010)

    题目选自洛谷P1010 我们知道,二进制数表示的其实就是一个正整数分解成为2的幂次方和! 如3用二进制表示为 11 ,从右到左分别是第0位,第1位-- 则3=2^1+2^0(只要二进制那位是一,就是2 ...

  6. Vijos P1597 2的幂次方【进制+递归】

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

  7. P1010 [NOIP1998 普及组] 幂次方 递归模拟

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

  8. 2的幂次方(快速幂+递归)

    题目 2的幂次方表示: 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b).由此可知,137可表示为: 2(7)+2(3)+2(0 ...

  9. P1010 幂次方 【分治递归】

    题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...

最新文章

  1. STL vector list deque区别与实现
  2. 智能手机相机测试中的功能测试和性能测试
  3. 未完全关闭数据库导致ORA-01012: not logged的解决
  4. Linux线程(三)
  5. XidianOJ 1099 A simple problem
  6. vs在linux下的环境搭建,linux下vscode环境配置
  7. Visual Studio开发工具分配字符数组的问题
  8. 用DIB位图显示图像
  9. java中model的意思_开发中model,entity和pojo的区别
  10. EasyRecovery2022强力数据恢复软件
  11. 温州商学院计算机二级office考试时间,全国计算机二级最新报名通知,注意报名时间,千万别错过!...
  12. 自动驾驶技术(3)- 高精度地图解决自动驾驶的功能痛点
  13. 批量删除新浪微博及自动发布微博
  14. 搜狗站群排名优化之搜狗批量推送工具
  15. 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
  16. 给全国高校本科招办的一封公开信
  17. ML和PR相关书籍及下载
  18. 服务器磁带断带修复,易备磁带版:安全合规、功能超群–Windows服务器的磁带备份软件...
  19. C++ 四种cast 详解
  20. 《网络运维基础知识手册》

热门文章

  1. CSDN 编程竞赛五十三期题解
  2. 布局(1) WP风格滑动布局模仿,类似360手机安全卫士
  3. 道琼斯指数与成分股关系分析
  4. mat opencv 修改roi_OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat)...
  5. 4.1 使用Python获取网页源代码
  6. (最详细)c语言尾插法头插法代码讲解
  7. 找工作找到蓝瘦香菇?看牵引力学员如何轻松过万
  8. python实现京东商品秒杀功能
  9. 带头结点双向循环 -- 双向链表
  10. 3D网上商城(3D Oline Mall)