zoukankan      html  css  js  c++  java
  • 第K个幸运数(京东2017秋招真题)

    题目

    4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字。前几个幸运数字为:4,7,44,47,74,77,444,447...
    现在输入一个数字K,输出第K个幸运数。

    输入

    第一行一个数字T(T<=1000)表示测试数据的组数。对于每组测试数据,输出一个数K(1 <= K <= 100000000000000000000000000)

    思路

    只有四和7,而且还和顺序有关,4,7,44,47,74,77 ,不免想到二进制0,1,00,01,10,11
    然后就是找对应数字的二进制和4,7的关系了。通过%2余数可知,不是0就是1,极其符合不是4就是7。
    最终通过计算发现(参考别人代码),对应数字+1之后的数字,除去最高位之外的二进制就是所要求的。

    代码

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while(in.hasNext()) {
                int n = in.nextInt();
                Long[] arr = new Long[n];
                // 输入数据
                for(int i=0;i<n;i++) {
                    arr[i] = in.nextLong()+1;
                }
                // 输出计算的结果
                for(int i=0;i<n;i++) {
                    String result = getArrays(arr[i]);
                    StringBuilder builder = new StringBuilder();
                    char[] chars = result.toCharArray();
                    for(int j = 1;j<chars.length;j++) {
                        if(chars[j] == '0') {
                            builder.append('4');
                        }else {
                            builder.append('7');
                        }
                    }
                    System.out.println(builder.toString());
                }
            }
        }
        public static String getArrays(Long num) {
            StringBuilder builder = new StringBuilder();
            while(num != 0) {
                builder.append(num%2);
                num = num/2;
            }
            return builder.reverse().toString();
        }
    
    }
    
    

    运行结果

    题目链接及答案链接

    https://exercise.acmcoder.com/online/online_judge_ques?ques_id=3376&konwledgeId=41

  • 相关阅读:
    网络服务—VSFTP
    DHCP服务基本搭建
    zabbix使用钉钉告警
    差分数组
    最小点权覆盖集&最大点权独立集
    康托展开&康托逆展开 的写法
    可并堆(左偏树)简单学习
    树链剖分原理与应用
    后缀数组学习笔记
    HDU-3974 Assign the task题解报告【dfs序+线段树】
  • 原文地址:https://www.cnblogs.com/lick468/p/11403322.html
Copyright © 2011-2022 走看看