考试平台: 赛码 时间: 2023-09-02 考试题型: 单选 15 题(3分/题) + 多选 10题 (3分/题) + 编程题 2题(10分 + 15 分) T1 小米手机通讯校准 (10分) 题目描述 小米手机生产过程中会经过严苛的测试环节,其中包括手机通讯功能中的射频校准。射频校准会打点数据上报到云端。其中包含两组费据:第一组数据中会包含此次校准的频道号(freg)信息; 第二组会上传一批数据,包含一组频道号(freg)和其对应的损失值(loss),其中这一组频道号(freg)不会重复,且是有序的。 现在需要根据第一组数据中的频道号(freq),找到离第二组中频道号(freg)最近的那一个freq对应的loss值,如果两边一样近,则取两边loss的平均。 (注:输入为int,输出为double类型四舍五入保留1位小数) 输入猫述 包含两组数据 第一组数据中会包含此次校准的频道号(freq)信息 第二组会上传一批数据,包含一组频道号(freq)和其对应的损失值(loss),其中这一组频道号(fre)不会重复,且是有序的。 输出描述 离频道号(freq)最近的freq对应的loss值,如果两边一样近,则取两边loss的平均. 样例 输入 28001950:10,2000:15,3000:9 输出 9.0 题解 只需要循环走一遍找最近的 freq 并更新 loss 即可。 import java.text.DecimalFormat;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int freq = Integer.parseInt(scanner.nextLine()); String[] split = scanner.nextLine().split(","); double ans = 0; int minDistance = Integer.MAX_VALUE; for (int i = 0; i < split.length; i++) { String[] str = split[i].split(":"); int f = Integer.valueOf(str[0]), loss = Integer.valueOf(str[1]); int distance = Math.abs(f - freq); if (distance < minDistance) { ans = loss; minDistance = distance; } else if (distance == minDistance) { ans = (ans + loss) / 2.0; } } Dec