ZJANS

b981. YoJudge 預練(時間之章)

Easy Last Update: 2026/01/29
字串

將各種格式的空間單位統一轉換為位元(bit)
可能出現的格式如下:

格式代表
xgbx×109×8x \times 10^{9} \times 8 bits
ymby×106×8y \times 10^{6} \times 8 bits
zkbz×103×8z \times 10^{3} \times 8 bits
ubyteu×8u \times 8 bits
z.akbzz kb 又 a×100a \times 100 byte
u.vbyteuu byte 又 vv bits
vbitvv bits
xgymxx gb 又 yy mb
xgymzkxx gb 又 yy mb 又 zz kb
ymzkyy mb 又 zz kb

解法一

✅ 完整代碼

評分結果(參考) : 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, 4) == "hour"){
                ans += num*60*60*1000;
                i += 3;
                num = 0;
            }
            else if(s.substr(i, 3) == "min"){
                ans += num*60*1000;
                i += 2;
                num = 0;
            }
            else if(s.substr(i, 2) == "ms"){
                ans += num;
                i += 1;
                num = 0;
            }
            else if(s[i] == 'h'){
                ans += num*60*60*1000;
                num = 0;
            }
            else if(s[i] == 'm'){
                ans += num*60*1000;
                num = 0;
            }
            else if(s[i] == 's'){
                ans += num*1000;
                num = 0;
            }
            else if(s[i] == '.'){
                ans += num*1000 + (s[i+1]-'0')*100;
                break;
            }
        }
        cout << ans << "\n";
    }
    
    return 0;
}