java:幂方分解
题目
、
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class 幂方分解 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader sc=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(sc.readLine());//将一个字符串 string 转换为 radix 进制的整数
String str=f(n);
System.out.print(str);
}
private static String f(double n) {
// TODO Auto-generated method stub
if(n==2)
return "2";//如果只是二,就是2的1次方就是2
else if(n==1)
return "2(0)";
/*
* 例如137,当i=8>n;所以就是2(f(7)),之后就是2*7<n所以,就是2(f(7))+f(剩下的数字的递归)
* 正好刚好整除,例如8,即为2(3)
*/
for(int i=2;;i++){
if(Math.pow(2,i)>n){//大于这个数的时候
String str;
if(i-1==1){
str="2";//如果等于2,直接是2
}else{
str="2("+f(i-1)+")";//如果不是,即为2输入括号里面的数
}
if(Math.pow(2, i-1)<n)
str+="+"+f(n-Math.pow(2, i-1));
return str;
}else if(Math.pow(2, i)==n){
String str="2("+f(i)+")";
return str;
}
}
}
}