考试平台: 赛码    时间: 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                       
点赞 20
评论 1
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务