获赞
608
粉丝
33
关注
15
看过 TA
37
University of Sydney
2017
Java
IP属地:广东
立志变红名!
私信
关注
2017-01-14 10:51
已编辑
爱奇艺_技术产品中心_Java开发
一个十进制数,按题目要求转换为特定形式。 输入291,二进制数为100100011 291=2(8)+2(5)+2(1)+2(0) 但是8也必须转换为特定的形式,除2(1)  2(2) 2(0)不用转换外。 最终输出为:2(2(2(1)+2(0)))+2(2(2)+2(0))+2(1)+2(0)
青檬寧:public static String DecimaltoBinary(int num){ char[] ch = Integer.toBinaryString(num).toCharArray(); String res = "";                 if(ch.length == 1 && ch[0] == '0'){ return "0"; } //从左到右记录幂的位置 int temp = ch.length-1; String s = ""; for (int i = 0; i < ch.length; i++) { if (ch[i] == '1') { if(temp > 2) { s = DecimaltoBinary(temp); }else{ s = temp+""; } if(res == "") { res += "2(" + s + ")"; } else { res += "+" + "2(" + s + ")"; } } temp--; } return res; } 就一个递归调用,没有多判断负数,上面有大神已经判断了!不过没想过复杂度的问题,能力不够查看图片
0 点赞 评论 收藏
分享
一个一维数组长度为n,其每个数的默认初始值为0,把x&nbsp;到y区间加上z,求出最后对应的最大值所在位置。输入为-1&nbsp;-1&nbsp;-1时,代表输入结束。(请问这个条件怎么满足,知道输入结束)&nbsp;输入:&nbsp;n&nbsp;x&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;z&nbsp;x&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;z&nbsp;-1&nbsp;-1&nbsp;-1&nbsp;输出:&nbsp;一维数组中最大值所在位置(如果最大值有重复,则输出最大值起始位置到末尾位置)&nbsp;实际例子输入:&nbsp;9&nbsp;1&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;2&nbsp;4&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;4&nbsp;-1&nbsp;&nbsp;-1&nbsp;&nbsp;-1&nbsp;输出:&nbsp;4
Bye2016:import java.util.Arrays; import java.util.Scanner; /** * 1.把所有[x, y]区间的值 + z * 2.遍历最大值位置就可以 * @author * */ public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); int arr[] = new int[n]; //用来存放所有数字 while (cin.hasNextInt()) { int x = cin.nextInt(); int y = cin.nextInt(); int z = cin.nextInt(); if(x == -1 && y == -1 && z == -1) { break; } for(int i = x; i <= y; i++) { arr[i] += z; //数组添加上相应的z } } System.out.println(Arrays.toString(arr)); int positionStart = 0; int positionEnd = 0; int temp = arr[0]; for(int i = 0; i < n; i++) { if(arr[i] > temp) { temp = arr[i]; positionStart = i; } if(arr[i] == temp) { temp = arr[i]; positionEnd = i; } } if(positionStart == positionEnd) { System.out.println(positionStart); } else { System.out.println(positionStart + " " + positionEnd); } } }
0 点赞 评论 收藏
分享
Java中,容量大的往容量小的转换时,需要强制转换,float&nbsp;f&nbsp;=&nbsp;3.4F&nbsp;,3.4默认为double类型容量大,转换为float时需要强转。1默认为int型容量小,为什么在变成long型容量大时,要强转加L。跪求大神,谢谢。困扰很久的问题。
Horanol:float a = 1.0f 不是强转,1.0默认是double类型的,1.0f才表示float类型,这个和c#语言是一样的。纯数字默认是int型,所以long a = 123中的123是int型,赋值给一个long型。而long a = 11111111113L后面的数字超过了int型,所以要加L表示这是long型的数字
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务