我的是java版本的,不过我认为还不是最优化的 public static void main(String [] args) { Scanner in = new Scanner(System.in); while(in.hasNext()) { int n = in.nextInt(); if(n == 0) { System.out.println(n); continue; } else if(n<0) { System.out.println("-("+DecimaltoBinary(-n)+")"); continue; } else System.out.println(DecimaltoBinary(n)); } } public static String DecimaltoBinary(int num) { StringBuilder temp = new StringBuilder(); String result = ""; while(num>0) { temp.append(num%2); num /= 2; } char [] a = temp.reverse().toString().toCharArray(); int len = a.length; int j = len-1; if(a[0] == '1') { result += "2("+j+")"; int k = j; if(k>2) { result = result.replaceFirst(k+"",DecimaltoBinary(k)); k--; } } j--; for(int i = 1;i<len;i++) { if(a[i] == '1') { result += "+2("+j+")"; int k = j; while(k>2) { result = result.replace(k+"",DecimaltoBinary(k)); k--; } } j--; } result = result.replace("2(1)", "2"); return result; }
点赞 1

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
牛客网
牛客企业服务