public static String solution(int n){
StringBuffer sb = new StringBuffer();
int wei = (int)(Math.log(n+1)/Math.log(2)); // 求出第n个幸运数的位长度
int num = n - ((int)Math.pow(2,wei)-1); // 求出第n个幸运数在该层的位置值
String binNum = Integer.toBinaryString(num);
for(int i = 0 ; i < wei-binNum.length() ; i++)
{
sb.append("0");
}
sb.append(binNum);
String luckyNum = sb.toString();
luckyNum = luckyNum.replace("0", "4");
luckyNum = luckyNum.replace("1", "7");
return luckyNum;
	}