將各種格式的時間單位統一轉換為毫秒
可能出現的格式如下:
| 格式 | 代表 |
|---|---|
| xhour | 小時 |
| xhym | 小時又 分鐘 |
| xhymzs | 小時又 分鐘又 秒 |
| ymin | 分鐘 |
| ymzs | 分鐘又 秒 |
| zs | 秒 |
| z.as | 秒又 毫秒 |
| bms | 毫秒 |
評分結果(參考) : AC (2ms, 336KB)
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
while(cin >> s){
int ans=0, num=0;
for(int i=0; i<s.size(); i++){
if(s[i]>='0' && s[i]<='9'){
num = num*10 + (s[i]-'0');
}
else if(s.substr(i, 2) == "gb"){
ans += num*1e9*8;
i += 1;
num = 0;
}
else if(s.substr(i, 2) == "mb"){
ans += num*1e6*8;
i += 1;
num = 0;
}
else if(s.substr(i, 2) == "kb"){
ans += num*1e3*8;
i += 1;
num = 0;
}
else if(s.substr(i, 4) == "byte"){
ans += num*8;
i += 3;
num = 0;
}
else if(s.substr(i, 3) == "bit"){
ans += num;
i += 2;
num = 0;
}
else if(s[i] == 'g'){
ans += num*1e9*8;
num = 0;
}
else if(s[i] == 'm'){
ans += num*1e6*8;
num = 0;
}
else if(s[i] == 'k'){
ans += num*1e3*8;
num = 0;
}
else if(s[i] == '.' && s.substr(i+2, 2) == "kb"){
ans += num*1e3*8 + (s[i+1]-'0')*100*8;
break;
}
else if(s[i] == '.' && s.substr(i+2, 4) == "byte"){
ans += num*8 + (s[i+1]-'0');
break;
}
}
cout << ans << "\n";
}
return 0;
}