3 条题解

  • -1
    @ 2023-12-13 22:58:14

    比较抽象的一道题orz,此题中必须用字符串数据直接算时间差,切不可先换算再计算,否则会导致精度损失,同时计算后单位必须换算为小时,而不能换算成秒,再在计算速度的时候换算速度,这也会导致过不了某一个测试集,如果有没有注意这两点也AC的同学,那欢迎来交流一下代码QAQ

    import java.util.Scanner;
    
    public class P1003 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String lastTime = "00:00:00";//上次记录的时间
            double totalDisplacement = 0;//总位移
            double speed = 0;//目前速度
            while (sc.hasNextLine())
            {
                String str = sc.nextLine();//检测输入
                //处理输入数据
                String[] tempStrArr1 = str.split(" ");//用" "分割时间和速度
    
                double deltaTime = TimeCalculation(lastTime,tempStrArr1[0]);//时间变化量
                double displacement = deltaTime*speed;//位移变化量
                totalDisplacement += displacement;//将位移变化量加到总位移上
                lastTime = tempStrArr1[0];//记录本次时间,用于下一次比对
                
                //先用空格分割了输入字符串,如果有输入“速度”,则分割出来的字符串数组长度应为2,没有则为1,有输入速度则更新速度,没有则输出目前时间和位移
                if(tempStrArr1.length == 1){
                    System.out.printf("%s %.2f km\n",tempStrArr1[0],totalDisplacement);
                } else if (tempStrArr1.length == 2) {
                    speed = Double.parseDouble(tempStrArr1[1]);
                }
    
            }
        }
        //此方法用来计算时间差,注意,此题中必须用字符串数据直接算时间差,切不可先换算再计算,否则会导致精度损失
        //同时计算后单位必须换算为小时,而不能换算成秒,再在计算速度的时候换算速度,也会导致过不了orz
        public static double TimeCalculation(String lastTime,String nowTime)
        {
            String[] lastTimeStr = lastTime.split(":");
            String[] nowTimeStr = nowTime.split(":");
            double hour = 0;
            for(int i = 0;i < 3;i++)
            {
                double delta_T = Double.parseDouble(nowTimeStr[i]) - Double.parseDouble(lastTimeStr[i]);
                hour += delta_T / Math.pow(60,i);
            }
            return hour;
        }
    }
    

    信息

    ID
    4
    时间
    1000ms
    内存
    32MiB
    难度
    9
    标签
    (无)
    递交数
    35
    已通过
    4
    上传者