#P8791. [蓝桥杯 2022 国 AC] 内存空间
[蓝桥杯 2022 国 AC] 内存空间
题目描述
小蓝最近总喜欢计算自己的代码中定义的变量占用了多少内存空间。
为了简化问题,变量的类型只有以下三种:
int
:整型变量,一个 int 型变量占用 Byte 的内存空间。
long
:长整型变量,一个 long 型变量占用 Byte 的内存空间。
String
:字符串变量,占用空间和字符串长度有关,设字符串长度为 ,则字符串占用 Byte 的内存空间,如果字符串长度为 则占用 Byte 的内存空间。
定义变量的语句只有两种形式,第一种形式为:
type var1=value1,var2=value2...;
定义了若干个 type 类型变量 var1、var2、……,并且用 value1、value2……初始化。
多个变量之间用 ,
分隔,语句以 ;
结尾,type 可能是 int
、long
或 String
。例如 int a=1,b=5,c=6;
占用空间为 Byte;long a=1,b=5;
占用空间为 Byte;String s1="",s2="hello",s3="world";
占用空间为 Byte。
第二种形式为:
type[] arr1=new type[size1],arr2=new type[size2]…;
定义了若干 type 类型的一维数组变量 arr1、arr2……,且数组的大小为 size1、size2……,多个变量之间用 ,
进行分隔,语句以 ;
结尾,type 只可能是 int
或 long
。例如 int[] a1=new int[10]
;占用的内存空间为 Byte;long[] a1=new long[10],a2=new long[10];
占用的内存空间为 Byte。
已知小蓝有 条定义变量的语句,请你帮他统计下一共占用了多少内存空间。结果的表示方式为:,其中 、、、 为统计的结果,、、、 为单位。优先用大的单位来表示,,,,其中 B
表示 Byte。如果 、、、 中的某几个数字为 ,那么不必输出这几个数字及其单位。题目保证一行中只有一句定义变量的语句,且每条语句都满足题干中描述的定义格式,所有的变量名都是合法的且均不重复。题目中的数据很规整,和上述给出的例子类似,除了类型后面有一个空格,以及定义数组时 new
后面的一个空格之外,不会出现多余的空
格。
输入格式
输入的第一行包含一个整数 ,表示有 句变量定义的语句。
接下来 行,每行包含一句变量定义语句。
输出格式
输出一行包含一个字符串,表示所有语句所占用空间的总大小。
1
long[] nums=new long[131072];
1MB
4
int a=0,b=0;
long x=0,y=0;
String s1="hello",s2="world";
long[] arr1=new long[100000],arr2=new long[100000];
1MB538KB546B
提示
【样例说明】
样例 1,占用的空间为 ,换算过后正好是 ,其它三个单位 、、 前面的数字都为 ,所以不用输出。
样例 2,占用的空间为 $4 \times 2 + 8 \times 2 + 10 + 8 \times 100000 \times 2$ B,换算后是 。
【评测用例规模与约定】
对于所有评测用例,,每条变量定义语句的长度不会超过 。所有的变量名称长度不会超过 ,且都由小写字母和数字组成。对于整型变量,初始化的值均是在其表示范围内的十进制整数,初始化的值不会是变量。对于 String 类型的变量,初始化的内容长度不会超过 ,且内容仅包含小写字母和数字,初始化的值不会是变量。对于数组类型变量,数组的长度为一个整数,范围为:,数组的长度不会是变量。 条语句定义的变量所占的内存空间总大小大于 B 且小于 GB。
蓝桥杯 2022 国赛 A 组 C 题(C 组 D 题)。