学校的水题,不过做的还是有点费劲阿。主要是自己把自己搞的有点晕了,哗啦啦啦写了好长一串变量。
主要就思考两个问题就行了
1、判断是否有交集
2、计算交集时间
简直一点难度都么的阿。可恶的。我发现我们学校的题库技术题少,就是一个个题都很麻烦
网址贴下acm.dlut.edu.cn
代码如下,大神请略过,小鸟你也可以略过
#include <stdio.h>
int aCome[3],aLeave[3];
int bCome[3],bLeave[3];
int hour,min,sec;
int hour1,min1,sec1;
int a1,a2,a3;
void print(){
printf("%d%d:%d%d:%d%d\n",a1/10,a1%10,a2/10,a2%10,a3/10,a3%10);
}
void calcu(){
// int a1,a2,a3;
a3=sec1-sec;
if(a3<0) {min1--;a3+=60;}
a2=min1-min;
if(a2<0) {hour1--;a2+=60;}
a1=hour1-hour;
print();
}
int judge(){
int a1,a2;
int b1,b2;
a1=aCome[0]*10000+aCome[1]*100+aCome[2];
a2=aLeave[0]*10000+aLeave[1]*100+aLeave[2];
b1=bCome[0]*10000+bCome[1]*100+bCome[2];
b2=bLeave[0]*10000+bLeave[1]*100+bLeave[2];
if(a1>b1) {hour=aCome[0];min=aCome[1];sec=aCome[2];}
else { hour=bCome[0];min=bCome[1];sec=bCome[2];}
if(a2>b2){hour1=bLeave[0];min1=bLeave[1];sec1=bLeave[2];}
else { hour1=aLeave[0];min1=aLeave[1];sec1=aLeave[2];}
if(a1<=b1&&b1<a2) return 1;
if(b1<=a1&&a1<b2) return 1;
return 0;
}
void input(){
scanf("%d:%d:%d",&aCome[0],&aCome[1],&aCome[2]);
getchar();
scanf("%d:%d:%d",&aLeave[0],&aLeave[1],&aLeave[2]);
getchar();
scanf("%d:%d:%d",&bCome[0],&bCome[1],&bCome[2]);
getchar();
scanf("%d:%d:%d",&bLeave[0],&bLeave[1],&bLeave[2]);
getchar();
}
int main(){
int Case;
// int result;
int aCome[3],aLeave[3];
int bCome[3],bLeave[3];
scanf("%d",&Case);
while(Case--){
input();
// result=judge();
if(judge()) calcu();
else printf("Impossible\n");
// print();
}
return 0;
}