蓝桥杯-2的次幂表示(java)
来源:互联网 发布:科比2010总决赛数据 编辑:程序博客网 时间:2024/05/21 06:45
算法训练 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); } }
0 0
- 【蓝桥杯-java】2的次幂表示
- 蓝桥杯-2的次幂表示(java)
- 算法训练 2的次幂表示 (java版)
- 蓝桥杯题目 2的次幂表示
- 2的次幂表示 蓝桥杯
- 蓝桥杯:2的次幂表示
- 蓝桥杯 2的次幂表示
- 蓝桥杯 算法训练 2的次幂表示(Java解题)
- 蓝桥杯 - 2的次幂表示 (递归)
- 蓝桥杯 算法训练 2的次幂表示(构造)
- 蓝桥杯 算法训练 2的次幂表示 (递归)
- 蓝桥杯2的次幂表示(位运算)
- 蓝桥杯 2的次幂表示 解题报告(递归)
- 2的次幂表示
- 2的次幂表示
- 2的次幂表示
- 2的次幂表示
- 2的次幂表示
- 单源最短路径——Dijkstra算法
- 数据结构之双向链表
- 【设计模式】迭代器模式
- C++项目和解决方案的区别
- JAVA FinalReference
- 蓝桥杯-2的次幂表示(java)
- centos中安装nginx
- 蓝桥杯 基础练习 回文数
- 122. Best Time to Buy and Sell Stock II
- 堆栈
- 原理调查之jdk配置原理
- 谁是凶手:
- 烟雨徽州行
- 如何用JQuery向select标签中添加option