洛谷P5707 【深基2.例12】上学迟到(C语言)

2023-12-30 19:29:37

?思路:
先计算的走路时间加上垃圾分类时间

int a = s / v + 10;

然后这道题的第1个坑来了,如果路程和时间不能整除的话,需要加一分钟,因为多出的那几秒也算,所以这边要加一个判定。

if (s % v != 0)
	a++;

接下来就是计算小时和分钟

h = a / 60;
m = a % 60;

然后这道题的第2个坑来了,题目说提前的时间不会超过一天而且要用24小时的形式输出,因为上午8点必须到达,所以我们这边需要添加两个判定,一判定h有没有超过8个小时,二判定m有没有超过50分钟

	if (h >= 8) {
		if (m > 50)
			printf("%d:0%d", 24 - h + 8 - 1, 60 - m);
		else
			printf("%d:%d", 24 - h + 8 - 1, 60 - m);
	}
	else {
		if (m > 50)
			printf("0%d:0%d", 8 - h - 1, 60 - m);
		else
			printf("0%d:%d", 8 - h - 1, 60 - m);
	}

完整代码:

#include<stdio.h>
int main()
{
	int s, v, h=0, m=0;
	scanf("%d %d", &s, &v);
	int a = s / v + 10;
	if (s % v != 0)
	a++;
	h = a / 60;
	m = a % 60;
	if (h >= 8) {
		if (m > 50)
			printf("%d:0%d", 24 - h + 8 - 1, 60 - m);
		else
			printf("%d:%d", 24 - h + 8 - 1, 60 - m);
	}
	else {
		if (m > 50)
			printf("0%d:0%d", 8 - h - 1, 60 - m);
		else
			printf("0%d:%d", 8 - h - 1, 60 - m);
	}
	return 0;
}

如果拿走,请在评论区打个1。

如果有更优的代码,请在评论区私信发给我谢谢!

文章来源:https://blog.csdn.net/2301_80267323/article/details/135295995
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。