微众银行笔试9.13

1.给n个数,取3个数拼接,输出最大数字
先取最长的三个数再字典序
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class _wz1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String[] arr = new String[n];
        for (int i = 0; i<n; i++){
            arr[i] = Integer.toString(sc.nextInt());
        }
        Arrays.sort(arr, new Comparator<String>() { @Override public int compare(String o1, String o2) {
                return o1.length() == o2.length() ? o2.compareTo(o1) : o2.length()-o1.length();
            }
        });

        String[] arr2 = new String[3];
        arr2[0]  = arr[0];
        arr2[1]  = arr[1];
        arr2[2]  = arr[2];
        Arrays.sort(arr2, new Comparator<String>() { @Override public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        for (int i = 0; i<3; i++){
            System.out.print(arr2[i]);
        }
    }
}

2.给a和b两个数,判断a经过乘或除2,4,8能否变成b,求这个最小变化次数。
中途进的笔试,没时间写了,后面写完了代码过了样例不知道对不对
思路:先求a和b之间的倍数,再求这个倍数是多少个2,再将2的幂数除以3,2和1求得乘除8,4和2的次数
import java.util.Scanner;

public class _wz2 {
    public static long log(long n)
    {
        long count = 0;
        if(n == 1)
            return 0;

        while(n > 1)
        {
            n = n>>1;	//右移 -> 除以2的1次方
            count++;
        }
        return count;
    }

    public static long Count(long a, long b,long ans){
        if ((a>b ? a%b:b%a) != 0) return -1;
        long res = a>b ? a/b:b/a;   //求倍率
        long count = 0;
        if(res==1) return 0;
        if((res&1)==1) return -1;
        else
            res = log(res); //倍率换算成多少个2

//        统计变换次数
        count += (res/3);
        res %= 3;
        count += (res/2);
        res %= 2;
        count += res;

        return count;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int i = 0; i<T; i++){
            long a = sc.nextLong();
            long b = sc.nextLong();
            System.out.println(Count(a,b,0));
        }
    }
}



#微众银行笔试##微众银行23秋招笔试,是我太菜了#
全部评论
一样的,中途进去的,结果快做完第二道就没时间了
点赞 回复
分享
发布于 2022-09-14 10:22 湖南
和百度的冲突了,做完百度去的,还剩一个小时,做到第三题就15分钟,还看错了题目
点赞 回复
分享
发布于 2022-09-14 14:42 广东
滴滴
校招火热招聘中
官网直投
楼主有收到面试嘛
点赞 回复
分享
发布于 2022-09-23 16:05 福建

相关推荐

6 32 评论
分享
牛客网
牛客企业服务