京东2017校招:4,7幸运数

来源:互联网 发布:mysql my.ini在哪里 编辑:程序博客网 时间:2024/06/07 12:00

京东2017年校招编程题第一题,实现语言:java
算法思想,将4,7看成0,1,转换成2进制,令最高为标志位1,则从2开始,举例说明:
2(10) -> 4
3(11) ->7
4(100)->44
5(101)->47
6(111)->77

//第K个幸运数//时间限制:C/C++语言 1000MS;其他语言 3000MS//内存限制:C/C++语言 65536KB;其他语言 589824KB//题目描述://4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字。//前几个幸运数字为:4,7,44,47,74,77,444,447... //现在输入一个数字K,输出第K个幸运数。//输入//第一行一个数字T(T<=1000)表示测试数据的组数。对于每组测试数据,输出一个数K//输出//每组数据输出一行,第K个幸运数。////样例输入//3//5//100//1000000000////样例输出//74//744747//77477744774747744747444444447import java.util.Scanner;public class Main{    public  static void main(String[] args){        Scanner scanner=new Scanner(System.in);        int rows=Integer.parseInt(scanner.nextLine());        for(int p=rows;p>0;p--){            Long input=Long.parseLong(scanner.nextLine());            long num=2L;            num+=input-1L;            String val=solution(num);            System.out.println(val);        }    }    public static String solution(long n){        String val=Long.toBinaryString(n);        StringBuffer result=new StringBuffer();        //0->4;1->7;舍弃最高位        for(int bit=1;bit<val.length();bit++){            if(val.charAt(bit)=='0')                result.append("4");            else                result.append("7");        }        return result.toString();    }}
0 0
原创粉丝点击