考研机试:数学问题之统计时间间隔

时间限制:1000ms 内存限制:65536KB

题目描述

给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足形式,其中x和y分别表示小时和分钟,0 <= x < 24,0 <= y < 60。

输入格式

第一行为数据组数T(0 <= T <= 50000)
每组数据包括两行,分别代表时间

输出格式

每组数据输出一行,表示最少经过的分钟数

输入样例

2
7:00
7:00
7:00
8:00

输出样例

0
60

题目分析

1、第一个时间小于第二个时间,表明是走小圈,是在一天,正常的算法
2、第一个时间大于第二个时间,表明这两个时间是在两天,要用后一个时间减去前一个时间再加上一天的时间。
8:00 7:00,-60+24x60=23x60

代码

#include <iostream>
#include <stdio.h>
using namespace std;
//超过时间限制,第一个就想输入输出,scanf和printf比cin,cout省时很多

int main(){
    int T;
    int hour1, min1, hour2, min2, temp;
    cin >> T;
    while(T--){
        scanf("%d:%d", &hour1, &min1);//格式化输入
        scanf("%d:%d", &hour2, &min2);
        int temp = (hour2-hour1)*60 + min2-min1;
        if(temp < 0){
            temp = temp + 1440;
            //cout << temp << endl;
            printf("%d\n", temp);
        }
        else{
            //cout << temp << endl;
            printf("%d\n", temp);//scanf和printf在输入输出上的强大效率!!!
        }
    }
    return 0;
}

运行结果

在这里插入图片描述

总结

开始用的cout输出,提交时显示“超过时间限制”。超过时间限制,第一个就想输入输出,scanf和printf比cin,cout省时很多。改用printf后就通过了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值