单点时限: 1.0 sec
内存限制: 512 MB
在程序设计语言中,我们需要先定义变量,再对变量进行操作。现在让你计算一下这些变量总共占用了多少内存空间(单位 Byte字节)。本题中涉及的数据类型所占空间大小如表所示,也可以用sizeof()运算符得到。
数据类型 | 大小(字节) |
---|---|
short | 2 |
int | 4 |
float | 4 |
double | 8 |
char | 1 |
输入格式
输入一个整数n,表示接下来有n行变量定义语句,变量定义语句为以下两种格式:
int a
类型 变量名
或者
int a[10]
类型 变量名[数组长度L]
保证数据类型仅包含short, int, float, double, char,不包含指针;
变量名仅由一个大写字母或小写字母构成。在此不同语句的变量名可以重复,每条语句都算作定义了一个新的变量;
如果变量是数组,则仅为一维数组,不会出现多维数组,数组长度为正整数L。
输入规模约定
对于60%的数据,0<n<=100, 变量定义语句中不包含数组
对于100%的数据,0<n<=100,变量定义语句中可以包含数组,且数组长度L满足0<L<=1000
输出格式
输出一个整数,表示所有变量占用的总内存空间大小,单位为字节。
样例
input
3 float b int a int c
output
12
input
5 float b int a char s[10] double d[5] int c
output
62
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n;
scanf("%d",&n);
int sum=0;
while(n--)
{
char s1[10],s2[10];
scanf("%s %s",s1,s2);
int size=0;
if(!strcmp(s1,"short"))size=2;
else if(!strcmp(s1,"int"))size=4;
else if(!strcmp(s1,"float"))size=4;
else if(!strcmp(s1,"double"))size=8;
else if(!strcmp(s1,"char"))size=1;
int i=0,t=0;
while(s2[i])
if(s2[i++]=='[')break;
while(s2[i]!=']'&&s2[i])
{t=s2[i]-'0'+t*10;i++;}
if(t==0)t=1;
sum+=t*size;
}
printf("%d",sum);
return 0;
}