求助,样例能过,为什么0分
查看原帖
求助,样例能过,为什么0分
613405
liuxiang007楼主2023/5/11 15:40
#include<iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll g, m, b, kb;
int main()
{
    int t;
    cin>>t;
    ll cnt = 0;
    getchar();
    while(t--){
        string s;
        getline(cin, s);
        int i = 0;
        bool flag = true;
        for(int j = 0; j < s.size(); j++){
            if(s[j] == '['){
                flag = false;
                break;
            }
        }
        if(!flag){
            while(i < s.size()){
                while(i < s.size() && s[i] != ',' && s[i] != ';'){
                    i++;
                }
                int j = i - 2;
                string temp = "";
                while(s[j] != '[') temp += s[j--];
                reverse(temp.begin(), temp.end());
                if(s[0] == 'i') cnt += stoi(temp) * 4;
                else if(s[0] == 'l') cnt += stoi(temp) * 8;
                i++;
            }
        }else{
            while(i < s.size()){
                while(i < s.size() && s[i] != ',' && s[i] != ';'){
                    i++;
                }
                int j = i - 2;
                if(s[0] == 'i') cnt += 4;
                else if(s[0] == 'l') cnt += 8;
                else if(s[0] == 'S'){
                	string temp = "";
                	while(s[j] != '"') temp += s[j--];
                	if(temp.size()) cnt += temp.size();
				}
                i++;
            }
        }
    }
    b = cnt;
    kb = b / 1024, b %= 1024;
    m = kb / 1024, kb %= 1024;
    g = m / 1024, m %= 1024;
    if(g) cout<<g<<"GB";
    if(m) cout<<m<<"MB";
    if(kb) cout<<kb<<"KB";
    if(b) cout<<b<<"B";
    return 0;
}
2023/5/11 15:40
加载中...