算法每一题,成长每一天~
C0E34 喊7的次数重排
真题链接:【持续更新】2024华为 OD 机试E卷 机考真题库清单(全真题库)
思路
Java
package com.ccr.paper_f;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class C0E34 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<Integer> list = Arrays.stream(in.nextLine().split(" "))
.map(Integer::parseInt)
.collect(Collectors.toList());
int n = list.size(); // 人数
int sum = list.stream().mapToInt(Integer::intValue).sum(); // 总次数
int[] times = new int[n]; // 实际次数
int num = 1;
int personIdx = 0;
while (sum > 0) {
if (seven(num++)) {
times[personIdx]++;
sum--;
}
personIdx = (personIdx + 1) % n;
}
for (int i = 0; i < n; i++) {
System.out.print(times[i] + " ");
}
}
public static boolean seven(int x) {
return x % 7 == 0 || String.valueOf(x).contains("7");
}
}
总结
1、题意没看懂,参考示例说明。
算法要多练多练多练!!