我们将只包含数字4和5,并且长度为偶数的数称为美丽数,例如:4554,545445,55445544等是美丽数,而34,445则不是美丽数。请用程序实现:给定数字n,输出第n个美丽数(输入1时输出44,输入2时输出45,输入3时输出54)(10分)
代码思路:两位数有4个分别为:44 45 54 55,四位数:4444 4445 。所以判断n在几位数的区间的第几位数。将45分别看作01
44 就是00 45 就是01.
代码:
import java.util.Scanner;
public class Main {
public static int deal(int n) {
int i=2;
while(true) {
if(n<=Math.pow(2, i)) {
break;
}
else {
n=(int) (n-Math.pow(2, i));
i=i+2;
}
}
return i;
}
public static int deal1(int n) {
int i=2;
while(true) {
if(n<=Math.pow(2, i)) {
break;
}
else {
n=(int) (n-Math.pow(2, i));
i=i+2;
}
}
return n;
}
public static String binary2decimal(int decNum , int digit) {
String binStr = "";
for(int i= digit-1;i>=0;i--) {
binStr +=(decNum>>i)&1;
}
return binStr;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m1=deal(n);
int m2=deal1(n);
String s=binary2decimal(m2-1,m1);
//System.out.println(s);
StringBuffer sb=new StringBuffer();
for(int i=0;i<s.length();i++) {
if(s.charAt(i)=='0') {
sb.append("4");
}
else {
sb.append("5");
}
}
System.out.println(sb.toString());
}
}