How Much Memory Your Code Is Using? Gym - 101955J
题意:
t组数据,每组数据会有n个定义类型的方式,给你每个类型所占字节,问一共占了多少字节,最终答案按照Kibibyte单位输出,并向上取整
题解:
直接模拟就行,记得判断定义数组的情况,模拟题,全场最好做的题
代码:
#include <bits/stdc++.h>
using namespace std;
int k;
int n;
int cnt=0;
int main()
{scanf("%d",&k);while(k--){long long ans=0;scanf("%d\n",&n);string a;while(n--){getline(cin,a);if(strstr(a.data(),"[")&&strstr(a.data(),"]")){int bas=0;if(strstr(a.data(),"long long ")){bas=8;}else if(strstr(a.data(),"long double ")){bas=16;}else if(strstr(a.data(),"bool ")){bas=1;}else if(strstr(a.data(),"char ")){bas=1;}else if(strstr(a.data(),"__int128 ")){bas=16;}else if(strstr(a.data(),"int ")){bas=4;}else if(strstr(a.data(),"double ")){bas=8;}else if(strstr(a.data(),"float ")){bas=4;}string kk;int f=0;for(auto i:a){if(i==']'){f=0;}if(f==1){kk.push_back(i);}if(i=='['){f=1;}}int pp=atoi(kk.data());ans=ans+(long long)pp*bas;}else{if(strstr(a.data(),"long long ")){ans+=8;}else if(strstr(a.data(),"long double ")){ans+=16;}else if(strstr(a.data(),"bool ")){ans+=1;}else if(strstr(a.data(),"char ")){ans+=1;}else if(strstr(a.data(),"__int128 ")){ans+=16;}else if(strstr(a.data(),"int ")){ans+=4;}else if(strstr(a.data(),"double ")){ans+=8;}else if(strstr(a.data(),"float ")){ans+=4;}}}printf("Case #%d: ",++cnt);if(ans%1024==0){printf("%d\n",ans/1024);}else{ans=ans/1024;ans++;printf("%d\n",ans);}}return 0;
}