1 条题解

  • 0
    @ 2025-8-24 22:13:36

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar C171501
    **

    搬运于2025-08-24 22:13:36,当前版本为作者最后更新于2020-02-27 09:07:19,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目上给出路程与速度,即可算出时间。

    由于s与v中的时间单位为分,所以我们直接将88小时换算成分钟(直接8608*60好了)。

    由于时间可能大于11天,我们在求出来的分钟数中加上246024*60

    当我们把该时间减去行走时间和垃圾分类后,判断剩下的时间是否大于一天,如果大于一天就减去一天的时间,但你必须向上取整,不然行走时间就会少。

    将剩下的时间除以6060得到出发时。将剩下的时间对6060取余得出发分。

    我大概就是这样想的。上代码。

    #include<bits/stdc++.h>
    using namespace std;
    double s,v,m;
    int n,a,t,b;
    int main()
    {
    	cin>>s>>v;
    	n=8*60+24*60;//两天总共的分钟数
    	t=ceil(s/v)+10;//ceil()很重要,向上取整,否则按C++逻辑会向下取整导致行走时间少。
    	n=n-t;//得出剩下的时间。
    	if(n>=24*60) n-=24*60;判断是否在前一天。
    	b=n%60;//得出出发分。
    	a=n/60;//得出出发时
    	if(a<10)//慢慢判断是否补0
    	{
    		if(b<10) cout<<"0"<<a<<":0"<<b;
    		else cout<<"0"<<a<<":"<<b;
    	}
    	else
    	{
    		if(b<10) cout<<a<<":0"<<b;
    		else cout<<a<<":"<<b;
    	}
    	return 0;
    }
    

    第二次写题解,有错请包涵。

    补充:早上没睡醒,初稿出现错误,已修正,感谢@_mliy

    • 1

    信息

    ID
    4745
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者