Day009 洛谷 P5707 上学迟到

洛谷 P5707 上学迟到

题目

思路分析

  1. 这题很明显要分多种情况讨论,0点至8点之间,0点之前,两种情况,在每种情况中又细分有四种情况,h大于或小于10,m大于或小于10。

  2. 首先先计算出走到学校要走多少分钟,s/v遇到小数要向上取整,再加上额外的10分钟,然后看它是否大于8*60

    ①如果大于说明是从昨天出发的,先把时间减去8*60,再用24*60进行计算

    ②如果小于说明是在今天出发的,直接用8*60减时间,得到出发的时间

  3. 将计算后得到的分钟转化成时分,用除60得到小时,用取余60得到分钟

  4. 根据时和分是否小于10进行判断,分成四种情况,符合哪种就按哪种输出

代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        double s = cin.nextDouble();
        double v = cin.nextDouble();
        int h = 0;
        int m = 0;
        int minute = (int) (10 + Math.ceil(s / v));//计算到学校需要多少分钟

        //判断是从今天出发还是从昨天出发,然后把时间转换一下
        if (minute > 8 * 60) minute = 24 * 60 - (minute - 8 * 60);
        else minute = 8 * 60 - minute;
        
        //转化成时分
        h = minute / 60;
        m = minute % 60;

        //分成四种情况,如果小于10就手动加个0,时和分用:隔开
        if (h < 10 && m >= 10) System.out.println("0" + h + ":" + m);
        if (h < 10 && m < 10) System.out.println("0" + h + ":" + "0" + m);
        if (h >= 10 && m >= 10) System.out.println(h + ":" + m);
        if (h >= 10 && m < 10) System.out.println(h + ":" + "0" + m);

        cin.close();
    }
}
原文地址:https://www.cnblogs.com/mooncell/p/14736193.html