b981. YoJudge 預練(時間之章)

題目 Problem

題目連結:https://zerojudge.tw/ShowProblem?problemid=b981

敘述 Description

 前幾天看到一隻 b961 YoJudge怪獸,感覺太強大了,所以先打Lo練功,期盼來日再戰YoJudge怪獸。
 這次任務較簡單,將以下各種格式的時間單位統一轉換為毫秒。 以下 x,y,z,a,b皆為非負整數
可能出現的時間單位格式如下:
xhour :代表 x 小時, 0<=x<24
xhym :代表 x 小時又 y 分鐘, 0<=x<24, 0<=y<60
xhymzs :代表 x 小時又 y 分鐘又 z 秒, 0<=x<24, 0<=y<60, 0<=z<60
ymin :代表 y 分鐘, 0<=y<60
ymzs :代表 y 分鐘又 z 秒, 0<=y<60, 0<=z<60
zs :代表 z 秒, 0<=y<60, 0<=z<60
z.as :代表 z 秒又 a*100毫秒, 0<=z<60, 0<=a<10
bms :代表 b 毫秒, 0<=b<1000

輸入 Input

多行直到 EOF,每行只有如上題目所說的時間格式,沒有空格

輸出 Output

將輸入的每一行換算為毫秒,輸出一行整數

範例輸入 Sample Input

1
2
3
4
5
6
7
8
13hour
9h20m
23h17m57s
6min
34m50s
8s
19.7s
567ms

範例輸出 Sample Output

1
2
3
4
5
6
7
8
46800000
33600000
83877000
360000
2090000
8000
19700
567

提示 Hint

題解 Solution

數字會先讀取,所以先存數字到 $tmp$ 裡面
讀到 $h$ 可能是 $h$ 或 $hour$,要自己判斷
讀到 $m$ 可能是 $m$ 或 $min$ 或 $ms$,$ms$ 是毫秒,要另外區隔
要注意小數點,反正小數點也只會在 $s$ 出現
出現小數點,就直接把數字放在 $s$ 就好
小數點後的數字另外判斷

程式碼 Accepted Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <bits/stdc++.h>
#define _ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int main(){
_
string enter;
while(cin>>enter){
int h=0,m=0,s=0,dot=0,ms=0,tmp=0,dotyes=0;
for(unsigned int i=0;i<enter.length();i++){
if(enter[i]=='.'){
s=tmp;
dotyes=1;
tmp=0;
}
else if('0'<=enter[i]&&enter[i]<='9'){
tmp*=10;
tmp+=enter[i]-'0';
}
else if(enter[i]=='h'){
if(i+1<enter.length()){
if(enter[i+1]=='o'){
h=tmp;
i+=3;
}
else{
h=tmp;
}
}
else{
h=tmp;
}
tmp=0;
}
else if(enter[i]=='m'){
if(i+1<enter.length()){
if(enter[i+1]=='s'){
ms=tmp;
i+=1;
}
else if(enter[i+1]=='i'){
m=tmp;
i+=2;
}
else{
m=tmp;
}
}
else{
m=tmp;
}
tmp=0;
}
else if(enter[i]=='s'){
if(dotyes){
dot=tmp;
}
else{
s=tmp;
}
tmp=0;
}
}
m+=h*60;
s+=m*60;
dot+=s*10;
ms+=dot*100;
cout<<ms<<'\n';
}
return 0;
}

後記 Afterword

很久沒出解題報告書了
還有另一個 YoJudge 預練(空間之章)
晚點再寫吧!寫完「空間之章」,就可以來寫真正的「YouJudge」(X)了


b981. YoJudge 預練(時間之章)
https://blog.yangjerry.tw/2018/10/26/zj-b981/
作者
Jerry Yang
發布於
2018年10月26日
許可協議