洛谷-P5707 【深基2.例12】上学迟到 Java实现

题目链接:P5707 【深基2.例12】上学迟到 - 洛谷

思路一:进制计算想到了小时候“不够减怎么办,向前借一位”的方法解决本题,其他方法太过复杂且当s过大,v过小时,容易失效。不用计算哪一日,所以输出小时,时间进制固定。

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //接收输入
        Scanner scanner = new Scanner(System.in);
        int s = scanner.nextInt();
        int v = scanner.nextInt();

        int m = (s % v == 0) ? 0 : 1;//判断有没有走完路程,向上取整
        int n = 8 * 60 - m - s / v- 10;//计算分钟(当天时间8:00-剩余路程的时间(0/1)--倒垃圾10分钟)
        int hour = n / 60, minute = n - hour * 60;//计算小时和分钟
        //分钟为负数,向小时借一(60分钟)
        if (minute < 0) {
            minute += 60;
            hour -= 1;
        }
        //小时为负数,向天数借一(24小时)
        while (hour < 0) {
            hour += 24;
        }
        //format生成格式化的字符串,数字前面补0,%d整数类型(十进制)
        String str = String.format("%02d", hour);
        String str1 = String.format("%02d", minute);
        System.out.println(str + ":" + str1);
    }
}

思路二代码:

P5707题解 - 作者:望庐山瀑布 的博客 - 源代码地址:洛谷博客

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int s = scanner.nextInt();
        int y = scanner.nextInt();
        Calendar date = Calendar.getInstance();
        date.set(2021, Calendar.MAY, 5, 8, 0, 0);
        date.add(Calendar.MINUTE, -10);
        date.add(Calendar.MINUTE, s % y == 0 ? -(s / y) : -(s / y) - 1);
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        System.out.println(format.format(date.getTime()));
    }
}

注:转载仅用于学习交流,非盈利

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值