2018年网易计算机视觉实习生笔试编程题

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床

输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。
接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=100)分钟到达教室。
接下来的一行包含两个整数,表示上课时间为A(0<=A<24)时B(0<=B<60)分。
数据保证至少有一个闹钟可以让牛牛及时到达教室。


输出描述:
输出两个整数表示牛牛最晚起床时间。

输入例子1:
3 
5 0 
6 0 
7 0 
59 
6 59

输出例子1:

6 0

【题目分析】:本题最重要的是不要把问题复杂化,昨天晚上做题的时候总是想的是小时是不是要转化为分钟,再去映射到原来的时分,但是问题就这样被复杂化了,这个问题其实只要保证每个闹钟加上路上的时间,与到校时间最接近的就是需要的结果输出便可以了。其中有一个技巧就是利用除法/取整,%取余。再利用||,&&两个符号,这题目自然迎刃而解了。这道题还总结了一个教训,一定要学会利用cin,cout和scanf,printf这样技巧也是会多次出现的,比如定义一个数字 int h[100],m[100],在其中输入几组时分,就是for(int i=0;i

#include
using namespace std;
int h[105],m[105];
int main(){
    int N;
    scanf("%d",&N);
    for(int i=0;ians1||(h[i]==ans1&&m[i]>ans2)){//找最接近的闹钟时间
                ans1=h[i];
                ans2=m[i];
            }
        }
    }

    printf("%d %d\n",ans1,ans2);
    return 0;
}



你可能感兴趣的:(2018实习笔试)