2013
12-12

# 九度-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)

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