一、报文翻译
输入一行报文,每个数据都是十六进制格式,且以空格隔开,第一个元素是报文长度;
翻译规则是:将“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%



京公网安备 11010502036488号