首页 > ACM题库 > 九度OJ > 九度-1095-2的幂次方[解题代码]
2013
12-12

九度-1095-2的幂次方[解题代码]

题目来源:2006年上海交通大学计算机研究生机试真题

题目描述:

    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)

java 代码如下:
import java.util.Scanner;

public class Main{
	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("\\(\\)", "");
	}
}
/**************************************************************
	Problem: 1095
	User: coder
	Language: Java
	Result: Accepted
	Time:170 ms
	Memory:15964 kb
****************************************************************/


  1. L(X [0 .. M-1],Y [0 .. N-1])= 1 + L(X [0 .. M-2],Y [0 .. N-1])这个地方也也有笔误
    应改为L(X [0 .. M-1],Y [0 .. N-1])= 1 + L(X [0 .. M-2],Y [0 .. N-2])

  2. Often We don’t set up on weblogs, but I would like to condition that this established up really forced me individually to do this! considerably outstanding publish