zoukankan      html  css  js  c++  java
  • 题目1095:2的幂次方 练习递归

    题目描述:

        Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。

        Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0). 
     
        Given a positive number n,your task is to present n with the exponential form which only contains the digits 0 and 2.

    输入:

        For each case, the input file contains a positive integer n (n<=20000).

    输出:

        For each case, you should output the exponential form of n an a single line.Note that,there should not be any additional white spaces in the line.

    样例输入:
    1315
    样例输出:
    2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
    
    
    package 上海交大;

    import java.util.Scanner;

    public class 幂次方1095 {
    static int n;
    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    while (s.hasNextInt()) {
    n = s.nextInt();
    System.out.println(f(n));
    }
    }
    static String f(int n) {
    StringBuffer sb = new StringBuffer();
    if (n < 8) {
    switch(n){
    case 0: return "0";
    case 1: return "";
    case 2: return "2";
    case 3: return "2+2(0)";
    case 4: return "2(2)";
    case 5: return "2(2)+2(0)";
    case 6: return "2(2)+2";
    case 7: return "2(2)+2+2(0)";
    }
    }else{
    String temp = Integer.toBinaryString(n);
    int len = temp.length();
    for(int i=0; i<len; i++){
    if(temp.charAt(i) == '1'){
    if(i!=0)
    sb.append("+");
    sb.append("2(");
    sb.append(f(len-i-1));
    sb.append(")");
    }
    }
    }
    return sb.toString().replaceAll("\\(\\)", "");
    }
    }


  • 相关阅读:
    常用网址记录
    css一些兼容问题
    css hack
    js 闭包
    js 继承
    js 实现淘宝放大镜
    css做三角形的方法
    js 轮播效果
    css3特效
    css布局
  • 原文地址:https://www.cnblogs.com/love533/p/2433528.html
Copyright © 2011-2022 走看看