洛谷 P5707 上学迟到
题目
思路分析
-
这题很明显要分多种情况讨论,0点至8点之间,0点之前,两种情况,在每种情况中又细分有四种情况,h大于或小于10,m大于或小于10。
-
首先先计算出走到学校要走多少分钟,s/v遇到小数要向上取整,再加上额外的10分钟,然后看它是否大于8*60
①如果大于说明是从昨天出发的,先把时间减去8*60,再用24*60进行计算
②如果小于说明是在今天出发的,直接用8*60减时间,得到出发的时间
-
将计算后得到的分钟转化成时分,用除60得到小时,用取余60得到分钟
-
根据时和分是否小于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();
}
}