zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 幂方分解

    问题描述
    任何一个正整数都可以用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;
    	                }
    	            }
    	        }
    	    }
    
    
    }
    
    
  • 相关阅读:
    彭明辉教授-《研究生完全求生手册》
    使用npm创建一个命令行工具
    #!/usr/bin/python与#!/usr/bin/env python的区别
    使用node+express搭建第一个node后端项目
    使用npm创建一个程序库包
    多项式多点求值
    2. 两数相加
    CSS实现子元素自动充满父元素的剩余空间
    侧边导航栏滚动条---CSS overflow实现
    Asp.NET Core简介
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079199.html
Copyright © 2011-2022 走看看