题目描述

何一个正整数都可以用2的幂次方表示。例如:137=2^7+2^3+2^0

同时约定幂次方用括号来表示,即a^b可表示为a(b)。由此可知,137可表示为: 2(7)+2(3)+2(0)

进一步:7= 2^2+2+2^0   (21用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+2^0

所以1315最后可表示为:

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

输入:正整数(n≤20000)

输出:符合约定的n的0,2表示(在表示中不能有空格)

输入格式

一个正整数

输出格式   

符合约定的n的0,2表示(在表示中不能有空格)

      样例输入

73

     样例输出

2(2(2)+2)+2(2+2(0))+2(0)

算法分析

参考博文:https://blog.csdn.net/C20190413/article/details/72625704

为了寻找规律,我们先列举出1~9的幂次方。

1   2(0)

2   2

3   2(0)+2

4  2(2)

5  2(2)+2(0)

6  2(1)+2(2)

7  2(0)+2+2(2)

8  2(3)=>2(2(0)+2)

9  2(0)+2(3)=>2(2(0)+2)+2(0)

我们不难发现,这其实是一个递归的过程,可以把1,2,3,4作为原子解,从5之后的整数就可以递归求解,如果指数不能用2(0),2,2(2)表示则继续递归分解。

递归模型:

程序实现

public class power {public static int mypower(int x){if(x <= 4){switch(x){case 0 :break;case 1 ://2^0System.out.print("2(0)");break;case 2 ://2^1System.out.print("2");break;case 3 ://2^0 + 2^1System.out.print("2(0)+2");break;case 4 ://2(2)System.out.print("2(2)");break;default :break;}}else {int i = 1;for(;Math.pow(2,i)<=x;i++);System.out.print("2(");mypower(i - 1);System.out.print(")");if (x != Math.pow(2, i - 1))System.out.print("+");mypower(x - (int) Math.pow(2, i - 1));}return 0;}
}

运行结果

附:程序源码

import java.util.Scanner;
public class power {public static int mypower(int x){if(x <= 4){switch(x){case 0 :break;case 1 ://2^0System.out.print("2(0)");break;case 2 ://2^1System.out.print("2");break;case 3 ://2^0 + 2^1System.out.print("2(0)+2");break;case 4 ://2(2)System.out.print("2(2)");break;default :break;}}else {int i = 1;for(;Math.pow(2,i)<=x;i++);System.out.print("2(");mypower(i - 1);System.out.print(")");if (x != Math.pow(2, i - 1))System.out.print("+");mypower(x - (int) Math.pow(2, i - 1));}return 0;}
}public class MyPow {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int x = sc.nextInt();power.mypower(x);}
}

(java)2的幂次方相关推荐

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

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

  2. Java Tricks —— 不小于一个数的最小2的幂次方

    不小于一个数的最小2的幂次方,对于 10 就是 16,对于 21 就是 32. 以下实现摘自 java HashMap 的源码: static final int tableSizeFor(int c ...

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

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

  4. 洛谷千题详解 | P1010 [NOIP1998 普及组] 幂次方【C++、Java、Python、Pascal语言】

    博主主页:Yu·仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C++源码: Pascal源码: Java源码: Python源码: ------------- ...

  5. Java中的幂运算(幂函数):如何编写一个数的n次方?

    ** Java中的幂运算(幂函数):如何编写一个数的n次方? ** java.lang.Math类中的pow方法. 方法声明:Math.pow(double m, double n) 参数说明:m为要 ...

  6. java如何实现e的次方_Java中怎样怎样算出求函数的幂次方?

    展开全部 java中通常进行数学运算的东西都在Math类中,求函数的幂次方就是Math类中的pow方法:public static double pow(double a, double b), 返回 ...

  7. [蓝桥杯][算法训练VIP]麦森数(Java大数+快速幂)

    题目描述 形如2p-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2p-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...

  8. 洛谷——P1010 [NOIP1998 普及组] 幂次方

    P1010 [NOIP1998 普及组] 幂次方 题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=27+23+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^b ...

  9. python 幂_python 幂次方

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python3获取的是浮点数(小数2.5)print(52)(整除-- 地板除) ...

最新文章

  1. 关于数据库,你可能最想知道的几件事
  2. PostgreSQL 编译安装
  3. Novodex2.6.2 布料系统
  4. Windows上安装scapy
  5. 散度、旋度与 Laplacian
  6. Step by Step 创建一个 Web Service
  7. pringMVC上传图片
  8. 16位汇编第一讲简介
  9. 利用爬虫大量抓取网页图片
  10. android 修改 dpi_努比亚 Z11|魔趣100|安卓10.0|归属地|机型修改|性能调整|稳定流畅...
  11. java中j是什么意思_i 1 j 是什么意思 i.j.k是什么意思
  12. [导入]关于Gmail无法链接的解决方法。
  13. 【转】bt5更新源(完整)
  14. 数据分析笔试经典sql题解
  15. Nikon Capture NX2.2.6下载及破解方法
  16. 英伟达tegra210 连接电视/hifi,设置默认声卡HDMI,
  17. blender 保留贴图转换 mmd 模型到 ue4/ue5 引擎
  18. 实验室易发事故LS类型及防范方法
  19. LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组
  20. LINUX基础之 压缩归档篇(二)

热门文章

  1. 江苏计算机电缆报价,江苏价格低的阻燃计算机电缆
  2. #超级818汽车狂欢夜#易车 买车不吃亏就上易车app
  3. 月圆茶润.人婵娟 小茶控·2021中秋茶礼 如“月”而至
  4. MFC、WTL、WPF、wxWidgets、Qt、GTK 对比
  5. 难道主键除了自增就是GUID?支持k8s等分布式场景下的id生成器了解下
  6. 《Python Excel 教程》
  7. 清华计算机系唐杰,清华大学—唐杰:图神经网络(GNN)及认知推理
  8. html里的常用特殊符号表示大全
  9. 如何实现 JS 运行时的 Inspector 能力
  10. 手机图片、铃声免费下载终极大法