一、报文翻译

输入一行报文,每个数据都是十六进制格式,且以空格隔开,第一个元素是报文长度;
翻译规则是:将“A”翻译成“12”和“34”,将“B”翻译成“AB”和“CD”;
输出转换后的报文长度以及报文内容

public class hwyz1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            String[] ss = sc.nextLine().split(" ");
            int n = Integer.parseInt(ss[0], 16);
            ArrayList<String> arr = new ArrayList<>();
            for (int i = 1; i <= n; i++) {
                String s = ss[i];
                if (s.equals("A")) {
                    arr.add("12");
                    arr.add("34");
                }else if (s.equals("B")) {
                    arr.add("AB");
                    arr.add("CD");
                }else {
                    arr.add(s);
                }
            }

            System.out.print(Integer.toString(arr.size(), 16).toUpperCase() + " ");
            for (String s : arr) {
                System.out.print(s + " ");
            }
        }
    }
}

注意:输出的长度数据要以十六进制输出,且大写!

二、找质数相关的一道题

给定一个数据范围,找出范围内的所有质数,将这些质数的个位数相加得到m,将这些质数的十位数相加得到n,输出较小的那一个

public class hwyz2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int min = in.nextInt();
        int max = in.nextInt();
        int m10 = 0;
        int m1 = 0;

        for (int ii = min; ii < max; ii++) {
            if (isRightNum(ii)) {
                System.out.println("sushu: "+ii);
                int temp = ii%10;
                m1 += temp;
                m10 += (ii%100 - temp)/10;
            }
        }

        System.out.println(Math.min(m10, m1));
    }

    //判断是不是质数,用了孪生素数的方式
    //所有大于等于5的质数,都满足(6k+1)或(6k-1)
    public static boolean isRightNum(int numb) {
        if (numb == 2 || numb == 3) {
            return true;
        }

        if (numb%6 != 1 && numb%6 != 5) {
            return false;
        }

        int tmp = (int)Math.sqrt(numb);
        for (int i = 5; i <= tmp; i += 6) {
            if (numb%i == 0 || numb%(i+2) == 0) {
                return false;
            }
        }
        return true;
    }
}

三、收到群聊消息的总人数

先输入发消息的人的名称,再输入多个数组代表多个群聊以及群中的人数,问一共有多少人收到这条消息?
构造图,再根据起点进行DFS计算顶点数量,这种解法通过率只有50%