題目 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
多行直到 EOF,每行只有如上題目所說的時間格式,沒有空格
輸出 Output
將輸入的每一行換算為毫秒,輸出一行整數
1 2 3 4 5 6 7 8
| 13hour 9h20m 23h17m57s 6min 34m50s 8s 19.7s 567ms
ARCADE
|
範例輸出 Sample Output
1 2 3 4 5 6 7 8
| 46800000 33600000 83877000 360000 2090000 8000 19700 567
DNS
|
提示 Hint
題解 Solution
數字會先讀取,所以先存數字到 裡面
讀到 可能是 或 ,要自己判斷
讀到 可能是 或 或 , 是毫秒,要另外區隔
要注意小數點,反正小數點也只會在 出現
出現小數點,就直接把數字放在 就好
小數點後的數字另外判斷
程式碼 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; }
CPP
|
後記 Afterword
很久沒出解題報告書了
還有另一個 YoJudge 預練(空間之章)
晚點再寫吧!寫完「空間之章」,就可以來寫真正的「YouJudge」(X)了