这是笔试时自己写的代码: import java.util.Scanner; publicclass Main { public static void findLuckNum(int location){ //找出location打印的是几位数 int temp=location+2; int yushu=0; int jiweishu=0; for(int i=1;i<100;i++){ if(temp-Math.pow(2, i)==0){ yushu=0; jiweishu=i; break; } if(temp>Math.pow(2, i)&&temp<Math.pow(2, i+1)){ yushu=(int) (temp-Math.pow(2, i)); jiweishu=i; break; } } if(yushu==0){ for(int k=1;k<jiweishu;k++){ System.out.print("7"); } } if(yushu!=0){ //这个数为第jiweishu层的第yushu数 int record=jiweishu-1; int tem=yushu; for(int k=record;k>=0;k--){ tem=(int)(tem-Math.pow(2,k)); if(tem>0){ System.out.print("7"); }else{   tem=(int)(tem+Math.pow(2,k));   System.out.print("4"); } } } System.out.println(); } public static void main(String[] args) { Scanner input=new Scanner(System.in); while(input.hasNext()){ int n=input.nextInt(); int[] tem=new int[n]; for(int i=0;i<n;i++){ tem[i]=input.nextInt(); } for(int j=0;j<n;j++){ Main.findLuckNum(tem[j]); } } } } //下面这种是考完写的简单代码 import java.util.Scanner; publicclass Main { public static void findLuckNum(int location){ int n=location+1; String s=Integer.toBinaryString(n); for(int i=1;i<s.length();i++){ if(s.charAt(i)=='0'){ System.out.print(4); }else{ System.out.print(7); } } System.out.println(); } public static void main(String[] args) { Scanner input=new Scanner(System.in); while(input.hasNext()){ int n=input.nextInt(); int[] tem=new int[n]; for(int i=0;i<n;i++){ tem[i]=input.nextInt(); } for(int j=0;j<n;j++){ Main.findLuckNum(tem[j]); } } } }
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务