蓝桥杯-2的次幂表示(java)
算法训练 2的次幂表示 时间限制:1.0s 内存限制:512.0MB问题描述任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。将这种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 (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)输入格式正整数(1<=n<=20000)输出格式符合约定的n的0,2表示(在表示中不能有空格)样例输入137样例输出2(2(2)+2+2(0))+2(2+2(0))+2(0)样例输入1315样例输出2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)提示用递归实现会比较简单,可以一边递归一边输出
package com.sihai.advance;import java.util.*; import java.math.*; /* * 1、先把一个整数变成二进制字符串,确定二进制1的个数N,然后按照二进制幂指数按照特定格式输出, * 2、使用二进制字符串的从左到右数的第一个1 * 3、如果幂指数k为0或者2,输出2(k), * 4、如果幂指数为1输出2 * 5、如果幂指数大于2,输出2(,然后调用自身传递k,最后输出) * 6、如果1的用的次数小于N,输出+,否则不输出 */ public class Main{ private static int find_one(String str_bin_val) { int count=0; for(int k=0;k<str_bin_val.length();k++) { if(str_bin_val.charAt(k)=='1') count++; } return count; } private static void bin_print(int a) { String str_bin=Integer.toBinaryString(a); int one_count=0; int one_sum=find_one(str_bin); int len=str_bin.length(); int k=len-1; for(int i=0;i<len;i++) { if(str_bin.charAt(i)=='1') { if(k==0||k==2) { System.out.print("2("); System.out.print(k); System.out.print(")"); } else if (k==1) { System.out.print("2"); } else { System.out.print("2("); bin_print(k);//递归调用 System.out.print(")"); } one_count++; if(one_count<one_sum)//最后的不应该输出+号的 System.out.print("+"); } k--; } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); int src=sc.nextInt(); bin_print(src); } }
蓝桥杯-2的次幂表示(java)相关推荐
- 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯
蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...
- 第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组(2021年4月18日)
第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组第一场 下载原题PDF 欢迎评论区留下答案讨论!!! 试题 A: ASC 本题总分:5 分 [问题描述] 已知大写字母 A 的 ASCII 码为 6 ...
- 第十届蓝桥杯大赛软件赛省赛——Java大学A组
第十届蓝桥杯大赛软件赛省赛--Java大学A组 试题A:平方和 public class TestA {static boolean has2019(int number) {String strin ...
- 第十三届蓝桥杯大赛软件赛省赛 Java 研究生组
第十三届蓝桥杯大赛软件赛省赛 Java 研究生组 [考生须知] 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试 题. 考试时间为 4 小时.考试期间选手可浏览自己已经提交的答案,被浏 ...
- 蓝桥杯 试题 算法训练 筛选号码 Java
蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...
- 第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组
第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组 试题 A: ASC 试题 B: 空间 试题 C: 卡片 试题 D: 相乘 试题 E: 路径 试题 F: 时间显示 试题 G: 最少砝码 试题 H: ...
- 蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)
第一题太简单懒得复制题目了 答案是:490 第二题: 试题 B: 不同子串 本题总分:5 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aa ...
- 金蝉素数c语言,算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)
前言:以下代码仅供参考,若有错误欢迎指正哦~ 1好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但 ...
- 蓝桥杯第七届省赛JAVA真题----压缩变换
压缩变换 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面 ...
- 蓝桥杯第六届国赛JAVA真题----切开字符串
标题:切开字符串 Pear有一个字符串,不过他希望把它切成两段. 这是一个长度为N(<=10^5)的字符串. Pear希望选择一个位置,把字符串不重复不遗漏地切成两段,长度分别是t和N-t(这两 ...
最新文章
- JSONP跨域的原理解析及其实现介绍
- LinkedIn联合创始人:硅谷也就700万人,为什么能创建这么多瞩目的公司 ?
- 收发一体超声波测距离传感器模块_一文了解超声波液位计
- 转:设置Eclipse中的tab键为4个空格的完整方法
- yaf php源码,PHP-Yaf执行流程-源码分析
- python3集合_Python3 集合
- Spark的ShuffleManager
- 最小生成树(Prim算法+Kruskal算法)
- Anaconda中安装pygame
- 常用数据库的字段类型及大小
- 14道Python基础练习题(附答案)
- 测试游戏帧率电脑温度的软件,游戏中显示帧数和温度方法_游戏画面中实时显示FPS帧数温度技巧...
- 一文看懂AutoML
- 一张图片切割成九宫格,微信朋友圈发布
- Error: watch task has to be a function(optionally generated by using gulp.parallel or gulp. series)
- 使用Trinity 软件进行拼接(无参转录组)
- 【Java】——2的次幂表示(C和Java实现)
- Cisco 3850交换机保存配置后重启配置文件丢失
- 这是一款走心的最新测评:英伟达史上最便宜AI硬件抗造不?
- Porting:linux内核的模块化、根文件系统的制作和自动挂载
热门文章
- C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化
- Hyperledger Fabric 智能合约实战 (5) sdk node软件安装
- Hgame 2022 Answer‘s Windows
- Harbor2.2.1配置(trivy扫描器、镜像签名)
- 深度学习arm MMU一篇就够了
- [trustzone]-ARMV8的aarch64和aarch32环境下ELx级别的理解
- Elementui icon图标不显示
- Fabric--CA 应用与配置
- c++11 auto 类型说明符详解
- pwndbg用docker实现,进行题目分析