本文主要是介绍[蓝桥杯 2018 省 A] 航班时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:航班时间
显然:去程时间=飞行时间+时差,回程时间=飞行时间-时差
列方程组可知:飞行时间=(去程时间+回程时间)/2
本道题目还有一个难点在于如何读入和输出:可以采用scanf()解决。
首先用scanf输入前面两个时间:
scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
然后用getchar()判断接下来还有没有数据,如果是“ ”说明还有:
if(getchar()==' ')scanf("(+%d)",&k);
同时输出也不用麻烦自己写函数:
printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);
输入输出解决了那我们可以计算了,首先将输入的数据全部转化成秒来计算,最后只需改变输出即可
代码附上:
#include <bits/stdc++.h>
using namespace std;
int n;int get(){int h1,m1,s1,h2,m2,s2,k=0;scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);if(getchar()==' ')scanf("(+%d)",&k);return (k*24*3600+h2*3600+m2*60+s2)-(h1*3600+m1*60+s1);
}int main(){scanf("%d",&n);while(n--){int ans=(get()+get())/2;printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);}return 0;
}
这篇关于[蓝桥杯 2018 省 A] 航班时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!