做题记录一

洛谷新人做题记录

## P5707 【深基2.例12】上学迟到

题目描述
这道题其实思维难度并不是很大,绊住我主要的原因是输出方式以及可以提前前一天走时的24小时时间进制转换。需要注意的一个点是,当需要的分钟不能整除时,进一位操作。因为题中问的是最晚什么时候出门
这里给出两个思路:

  1. 算出需要的时间,从第二天早上8:00向前推;
  2. 算出总的时间,减去需要的时间,从第一天早上8:00向后推。

思路一:
我刚开始是第一种思路,但用第一种方法的时候需要将算出的分钟转换为时,还再需要判断是否小时数大于7。附上我完成一半的代码。

#include<iostream>
using namespace std;
int main()
{
	int s,v;
	cin>>s>>v;
	int time,hour ,minutes,sum;
	time=s/v+10;
    if(s%v!=0)
    time++;
   if(time<60)
    cout<<"07:"<<60-time;
  	else
	{
		hour=time/60;
		minutes=time%60;
		if(hour>=24)
        cout<<"error";
        if(hour<=7)
        {
        	if(60-minutes<10)
        	cout<<"0"<<7-hour<<":0"<<60-minutes;
			else
			cout<<"0"<<7-hour<<":"<<60-minutes;  
		}
	    if(hour>7&&hour<24)
	    {
	    	if(32-hour<10)
        	cout<<"0"<<32-hour<<":";//这样补0输出应该是无法通过第7个测试点 
			else
			cout<<32-hour<<":"; //原谅我不太会看测试点 但这样输出属实过不去
			if(60-minutes<10)
        	cout<<"0"<<60-minutes;
			else
			cout<<60-minutes;  
		}
	}
	return 0;
 } 

思路二:
不是很难想,不多做解释。

#include<iostream>
using namespace std;
int main()
{
	int s,v;
	cin>>s>>v;
	int time,hour,minutes,sum;
	time=s/v+10;
    if(s%v!=0)
    time++;
    sum=24*60-time;//24小时一共的分钟数
    if(sum<=0)
    return 0;
    hour=sum/60+8;
    minutes=sum%60;
    if(hour>=24)
    hour=hour-24;
    int a,b,c,d;
    a=hour/10;//a,b,c,d存在的意义就是补0输出
    b=hour%10;
    c=minutes/10;
    d=minutes%10;
    cout<<a<<b<<":"<<c<<d;
	return 0;
}

总结一下,这道题可能很简单,但确实花费了我一个小时的时间。当我第一次提交答案的时候,10个测试点只对了3个,第一次修改好时变成了6个测试点正确,到最后就剩下第7个测试点错误,这中间我修改了十几次,不断调试。最后提交通过的时候,真的很开心。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值