NOIP2011模拟9.17 电话时间
2016-08-16 16:53
549 查看
Description
某人总是花很多时间给父母打电话。有一次他记录了打电话的开始时间和结束时刻t1和t2,请你帮他算算此次通话一共用了多少秒。又有一次,他记录了打电话的开始时刻t1和通话的时间长度len,请你帮他计算他在什么时刻结束通话。
已知每次通话时间小于24个小时。
Input
输入文件phone.in的第一行为一个正整数T,表示了数据组数。
接下来T行,每行第一个数为k:
如果k = 0,接下来包含两个时间t1和t2,表示了打电话的开始时间和结束时刻,用一个空格隔开,时间格式为HH:MM:SS,其中0≤HH≤23,0≤MM,SS≤59。HH、MM和SS都是两位数字,因此0:1:2是不合法的时间(应写作00:01:02)。你应该对这个询问输出通话时间长度,答案一定为区间[0,86400)之内的非负整数。
如果k=1,接下来包含一个时间t1和一个非负整数len,表示了打电话的开始时刻与通话时间长度,用一个空格隔开,时间格式同为HH:MM:SS,同样时间小于24个小时,即len<86400。你应该对这个询问输出结束通话的时刻,同为HH:MM:SS格式。
Output
输出文件phone.out包含T个整数或者时间,对于每个询问输出对应的答案。
Sample Input
4
0 01:02:03 04:05:06
0 23:59:59 00:00:00
1 00:00:03 3
1 23:59:58 4
Sample Output
10983
1
00:00:06
00:00:02
Data Constraint
Hint
对于20%的数据,T ≤ 10;
对于40%的数据,T ≤ 100;
对于100%的数据,T ≤ 100000。
分析:
对于一个NOIP选手来说,这题就是一个水题。注意细节,多弄些数据就可以了。我们这题有一半的人爆蛋(我满分)。
代码:
某人总是花很多时间给父母打电话。有一次他记录了打电话的开始时间和结束时刻t1和t2,请你帮他算算此次通话一共用了多少秒。又有一次,他记录了打电话的开始时刻t1和通话的时间长度len,请你帮他计算他在什么时刻结束通话。
已知每次通话时间小于24个小时。
Input
输入文件phone.in的第一行为一个正整数T,表示了数据组数。
接下来T行,每行第一个数为k:
如果k = 0,接下来包含两个时间t1和t2,表示了打电话的开始时间和结束时刻,用一个空格隔开,时间格式为HH:MM:SS,其中0≤HH≤23,0≤MM,SS≤59。HH、MM和SS都是两位数字,因此0:1:2是不合法的时间(应写作00:01:02)。你应该对这个询问输出通话时间长度,答案一定为区间[0,86400)之内的非负整数。
如果k=1,接下来包含一个时间t1和一个非负整数len,表示了打电话的开始时刻与通话时间长度,用一个空格隔开,时间格式同为HH:MM:SS,同样时间小于24个小时,即len<86400。你应该对这个询问输出结束通话的时刻,同为HH:MM:SS格式。
Output
输出文件phone.out包含T个整数或者时间,对于每个询问输出对应的答案。
Sample Input
4
0 01:02:03 04:05:06
0 23:59:59 00:00:00
1 00:00:03 3
1 23:59:58 4
Sample Output
10983
1
00:00:06
00:00:02
Data Constraint
Hint
对于20%的数据,T ≤ 10;
对于40%的数据,T ≤ 100;
对于100%的数据,T ≤ 100000。
分析:
对于一个NOIP选手来说,这题就是一个水题。注意细节,多弄些数据就可以了。我们这题有一半的人爆蛋(我满分)。
代码:
var s:string; t,n,i,j,x,y,z,a,b,c,k:longint; time:array [1..6] of longint; begin readln(n); for k:=1 to n do begin readln(s); j:=0; x:=0; if s[1]='0' then begin delete(s,1,2); for i:=1 to length(s) do begin if ('0'<=s[i]) and (s[i]<='9') then x:=x*10+ord(s[i])-48 else begin inc(j); time[j]:=x; x:=0; end; end; inc(j); time[j]:=x; x:=time[1]*3600+time[2]*60+time[3]; y:=time[4]*3600+time[5]*60+time[6]; if y<x then y:=y+24*3600; writeln(y-x); end else begin delete(s,1,2); i:=length(s); while s[i] in ['0'..'9'] do dec(i); val(copy(s,i+1,length(s)),t,x); x:=0; for i:=1 to length(s)-2 do begin if ('0'<=s[i]) and (s[i]<='9') then x:=x*10+ord(s[i])-48 else begin inc(j); time[j]:=x; x:=0; end; end; inc(j); time[j]:=x; x:=time[1]*3600+time[2]*60+time[3]; y:=x+t; c:=y mod 60; b:=y mod 3600 div 60; a:=y div 3600; if a>=24 then a:=a-24; if a<=9 then write('0',a,':') else write(a,':'); if b<=9 then write('0',b,':') else write(b,':'); if c<=9 then writeln('0',c) else writeln(c); end; end; end.
相关文章推荐
- jzoj 2567. 【NOIP2011模拟9.17】电话时间
- 2567. 【NOIP2011模拟9.17】电话时间 (Standard IO)
- 2567. 【NOIP2011模拟9.17】电话时间 (StandardIO)
- 2569. 【NOIP2011模拟9.17】旅行 (Standard IO)
- 2570. 【NOIP2011模拟9.17】数字生成游戏 (StandardIO)
- 2570. 【NOIP2011模拟9.17】数字生成游戏 (Standard IO)
- 【NOIP2011模拟9.17】地铁建设
- jzoj 2568. 【NOIP2011模拟9.17】地铁建设
- 2568. 【NOIP2011模拟9.17】地铁建设 (Standard IO)
- 【NOIP2011模拟9.17】旅行
- jzoj 2570. 【NOIP2011模拟9.17】数字生成游戏
- 【NOIP2011模拟9.17】数字生成游戏
- 【模拟】[NOIP2011提高组]铺地毯
- jzoj 2543. 【NOIP2011模拟9.1】直角三角形
- jzoj 2546. 【NOIP2011模拟9.3】遥控车
- 2548. 【NOIP2011模拟9.4】最大正方形 (Standard IO)
- Jzoj 2555. 【NOIP2011模拟9.7】雾雨魔理沙
- 【NOIP2011模拟9.9】单词分类
- 2559. 【NOIP2011模拟9.9】最短路 (StandardIO)
- 【jzoj5286】【NOIP2017提高A组模拟8.16】【花花的森林 】【时间倒流】