问题描述

任何一个正整数都可以用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 幂方分解 {
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();
boolean isOutputFirst = false;
for (int i = 0; i < cs.length; i++) {
if (cs[i] == '1') {
if (isOutputFirst) {
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(")");
}
isOutputFirst = true;
}
}
}
} }

最新文章

  1. dreamweaver快捷键
  2. [刘阳Java]_MyBatis_常规标签的用法_第6讲
  3. Redis学习笔记~Redis并发锁机制
  4. 获取gridpanel 中 checkbox的状态
  5. MC的一些具体的应用的例子的总结
  6. C中的setjmp与longjmp
  7. QWT6.0.1+win7下安装说明
  8. selenium WebDriver 获取disabled文本框内容(转)
  9. linux分区工具fdisk的使用
  10. iOS开发-OC语言 (七)继承、多态、类别
  11. 游戏开发之在UE4中编写C++代码控制角色
  12. 2个问题,解决tomcat启动一闪而过和运行tomcat/bin目录下的startup.bat时报错(the CATALINA_HOME environment variable is not defined correctly)
  13. javascript常用函数实现的收集
  14. c#事件的应用
  15. 【openvpn】转载:烂泥:ubuntu 14.04搭建OpenVPN服务器
  16. vim编辑器常见命令归纳大全
  17. SpringMVC 手动控制事务提交 【转】
  18. NPM修改默认全局安装路径
  19. CrackMe005-下篇 | 逆向破解分析 | 160个CrackMe(视频+图文)深度解析系列
  20. struts原理图

热门文章

  1. redis文章汇总
  2. idea 2020 配置本地 Maven 仓库
  3. [hdu5351]找规律,大整数模板
  4. springmvc 校验---spring校验
  5. ArrayList详解-源码分析
  6. POJ3903 Stock Exchange LIS最长上升子序列
  7. Python的逻辑结构和函数
  8. SWPU邮件登录界面的仿写(第二次作业)
  9. INNODB索引单列不能超767 复合不能超3072
  10. H3C S5500V2交换机误格式化恢复