https://codeforces.com/gym/101955

J

签到

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<string>
#include <set>
#include <map>
#include <queue>
#include <cmath>
#define ll long long
#define fo(i,l,r) for(int i = l;i <= r;i++)
#define fd(i,l,r) for(int i = r;i >= l;i--)
using namespace std;
const int maxn = 5e5+5;
ll read() {
    ll x = 0, f = 1;
    char ch = getchar();
    while (!(ch >= '0' && ch <= '9')) {
        if (ch == '-')f = -1;
        ch = getchar();
    };
    while (ch >= '0' && ch <= '9') {
        x = x * 10 + (ch - '0');
        ch = getchar();
    };
    return x*f;
}
char s[105];
int main(){
    int T;
    cin>>T;
    int n;
    ll ans,a,b;
    int Case = 0;
    while(T--){
        n=read();
        ans = 0;
        fo(tt,1,n) {
            cin.getline(s + 1, 100);
            b = a = 0;
            if (s[1] == 'b') a = 1;
            if (s[1] == 'c') a = 1;
            if (s[1] == 'i') a = 4;
            if (s[1] == 'l' && s[6] == 'l')a = 8;
            if (s[1] == '_')a = 16;
            if (s[1] == 'f')a = 4;
            if (s[1] == 'd')a = 8;
            if (!a)a = 16;
            int len = strlen(s + 1);
            int bs = 1;
            if (s[len - 1] == ']') {
                for (int i = len - 2; i >= 1; i--) {
                    if (s[i] == '[')break;
                    b = b + (s[i] - '0') * bs;
                    bs *= 10;
                }
            } else {
                b = 1;
            }
            ans += a * b;
        }
        if(ans%1024) ans = ans/1024 + 1;
        else ans = ans/1024;
        cout<<"Case #"<<++Case<<": "<<ans<<endl;
    }
    return 0;
}
View Code

相关文章: