(java)2的幂次方
题目描述
何一个正整数都可以用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的幂次方相关推荐
- Java递归例子——求x的y幂次方
假设n的值大于0. 一:源程序: View Code package one; public class RecursionTest { /** * @param args */ public sta ...
- Java Tricks —— 不小于一个数的最小2的幂次方
不小于一个数的最小2的幂次方,对于 10 就是 16,对于 21 就是 32. 以下实现摘自 java HashMap 的源码: static final int tableSizeFor(int c ...
- java 求次方_Java递归例子——求x的y幂次方
假设n的值大于0. 一:源程序: View Code packageone;publicclassRecursionTest {/***@paramargs*/publicstaticvoidmain ...
- 洛谷千题详解 | P1010 [NOIP1998 普及组] 幂次方【C++、Java、Python、Pascal语言】
博主主页:Yu·仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C++源码: Pascal源码: Java源码: Python源码: ------------- ...
- Java中的幂运算(幂函数):如何编写一个数的n次方?
** Java中的幂运算(幂函数):如何编写一个数的n次方? ** java.lang.Math类中的pow方法. 方法声明:Math.pow(double m, double n) 参数说明:m为要 ...
- java如何实现e的次方_Java中怎样怎样算出求函数的幂次方?
展开全部 java中通常进行数学运算的东西都在Math类中,求函数的幂次方就是Math类中的pow方法:public static double pow(double a, double b), 返回 ...
- [蓝桥杯][算法训练VIP]麦森数(Java大数+快速幂)
题目描述 形如2p-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2p-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...
- 洛谷——P1010 [NOIP1998 普及组] 幂次方
P1010 [NOIP1998 普及组] 幂次方 题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=27+23+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^b ...
- python 幂_python 幂次方
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python3获取的是浮点数(小数2.5)print(52)(整除-- 地板除) ...
最新文章
- 关于数据库,你可能最想知道的几件事
- PostgreSQL 编译安装
- Novodex2.6.2 布料系统
- Windows上安装scapy
- 散度、旋度与 Laplacian
- Step by Step 创建一个 Web Service
- pringMVC上传图片
- 16位汇编第一讲简介
- 利用爬虫大量抓取网页图片
- android 修改 dpi_努比亚 Z11|魔趣100|安卓10.0|归属地|机型修改|性能调整|稳定流畅...
- java中j是什么意思_i 1 j 是什么意思 i.j.k是什么意思
- [导入]关于Gmail无法链接的解决方法。
- 【转】bt5更新源(完整)
- 数据分析笔试经典sql题解
- Nikon Capture NX2.2.6下载及破解方法
- 英伟达tegra210 连接电视/hifi,设置默认声卡HDMI,
- blender 保留贴图转换 mmd 模型到 ue4/ue5 引擎
- 实验室易发事故LS类型及防范方法
- LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组
- LINUX基础之 压缩归档篇(二)
热门文章
- 江苏计算机电缆报价,江苏价格低的阻燃计算机电缆
- #超级818汽车狂欢夜#易车 买车不吃亏就上易车app
- 月圆茶润.人婵娟 小茶控·2021中秋茶礼 如“月”而至
- MFC、WTL、WPF、wxWidgets、Qt、GTK 对比
- 难道主键除了自增就是GUID?支持k8s等分布式场景下的id生成器了解下
- 《Python Excel 教程》
- 清华计算机系唐杰,清华大学—唐杰:图神经网络(GNN)及认知推理
- html里的常用特殊符号表示大全
- 如何实现 JS 运行时的 Inspector 能力
- 手机图片、铃声免费下载终极大法