AcWing 1231. 航班时间
原题链接
简单
getline
这个函数在使用之前如果前面有 cin >> T
这样的代码要先 getchar()
一下。
- 或者也可以用
cin.getline(s, 100000, '\n')
- 在使用
getline()
的时候如果要使用 sscanf
可以用 .c_str()
将string其转换为C风格字符串
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <vector>
using namespace std;
int get()
{
int h1, m1, s1, h2, m2, s2, add = 0;
string s;
std::getline(cin, s);
sscanf(s.c_str(), "%d:%d:%d %d:%d:%d (+%d)", &h1,
&m1, &s1, &h2, &m2, &s2, &add);
int t1 = h1 * 3600 + m1 * 60 + s1;
int t2 = h2 * 3600 + m2 * 60 + s2 + add * 3600 * 24;
return t2 - t1;
}
int main()
{
int T;
cin >> T;
getchar();
while (T -- )
{
int t = (get() + get()) / 2;
printf("%02d:%02d:%02d\n", t / 3600, t % 3600 / 60, t % 60);
}
return 0;
}