幂方分解
蓝桥杯 ALGO-12 幂方分解
问题描述
任何一个正整数都可以用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)
输入格式
输入包含一个正整数N(N<=20000),为要求分解的整数。
输出格式
程序输出包含一行字符串,为符合约定的n的0,2表示(在表示中不能有空格)
方法一:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); in.close(); div(n); } private static void div(int n) { if (n == 0) { System.out.print(0); return; } char[] cs = Integer.toBinaryString(n).toCharArray(); //这个数组从下标0开始到数组结尾,存储的是二进制从头到尾 boolean book= false; for (int i = 0; i < cs.length; i++) { if (cs[i] == '1') { if (book) { if (cs.length - i - 1 == 1) { System.out.print("+2"); } else { System.out.print("+2("); div(cs.length - 1 - i); System.out.print(")"); } } else { if (cs.length - i - 1 == 1) { System.out.print(2); } else { System.out.print("2("); div(cs.length - 1 - i); System.out.print(")"); } book = true; } } } } }
方法二:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); fun(n); } public static void fun(int n){ int value = 0; if(n==1){ System.out.print("2(0)"); return; } if(n==2){ System.out.print("2"); return; } for(int i=0;i<15;i++){ if(n>=Math.pow(2,i) && n<Math.pow(2,i+1)){ value = i; break; } } if(value==0){ System.out.print("2(0)"); }else if(value==1){ System.out.print("2"); }else { System.out.print("2("); fun(value); System.out.print(")"); } if((int)(n - Math.pow(2,value))!=0){ System.out.print("+"); fun((int)(n - Math.pow(2,value))); } } }
__EOF__

本文作者:techgy
本文链接:https://www.cnblogs.com/techgy/p/12787634.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/techgy/p/12787634.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2019-04-27 面向对象分析之三个子模型与五个层次