QOJ.ac

QOJ

Time Limit: 8.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#7025. 你的代码占用了多少内存?

Statistics

在 C++ 语言中,变量的值以二进制形式存储在计算机内存中。我们的程序不需要知道变量存储的确切位置,因为可以通过名称来引用它们。

程序需要了解的是每个变量中存储的数据类型。存储一个简单的整数与存储一个字符或一个大型浮点数是不同的。尽管它们都由二进制表示,但它们的解释方式不同,且在许多情况下,它们占用的内存大小也不相同。

基本数据类型由语言直接实现,代表了大多数系统原生支持的基本存储单元。它们主要可以分为四类:

字符类型:它们可以表示单个字符,例如 ‘A’ 或 ‘$’。最基本的类型是 char,它是一个字节的字符。

数值整型:它们可以存储整数值,例如 7 或 1024。它们有多种大小。最基本的是 int,它是一个四字节的整数。long long 是一种更大的类型,占用的内存是 int 的两倍。在某些新系统中可能会出现更宽的整数类型 __int128,它是一个 16 字节的整数,但很少用到。

浮点类型:它们可以表示实数值,例如 3.14 或 0.01,根据所使用的三种浮点类型中的哪一种,精度水平会有所不同。floatdoublelong double 分别对应 intlong long__int128,前者占用的内存大小与后者相同。

布尔类型:布尔类型在 C++ 中称为 bool,只能表示两种状态之一:truefalse。它是一个字节的类型。

现在你有一段 C++ 代码,其中有 $n$ 行用于申请变量和数组。此外,我已经检查过这段代码,可以保证所有变量和数组都是全局的,且没有任何冲突。

作为一个初学者,代码中的每一行可能只申请一个变量或一个数组;所有这些变量和数组的类型都在上述说明中提到;代码中不会出现未提及的其他类型。你的任务是计算这段代码总共使用的内存大小。请以 Kibibyte(1 Kibibyte 等于 1024 字节)为单位输出你的答案,并向上取整到最接近的整数。

输入格式

输入包含多个测试用例,第一行包含一个正整数 $T$,表示测试用例的数量,最多为 100。

对于每个测试用例,第一行包含一个正整数 $n$,最多为 1000,表示代码中申请(即分配内存)变量和数组的总行数。接下来的 $n$ 行中,每一行可能以以下形式声明一个变量:

  • type variable_name;

或者以以下形式声明一个新数组:

  • type array_name[array_size];

其中 type 必须是上述类型名称之一。所有的 variable_namearray_name 都是仅包含小写字母且长度不超过 10 的不同字符串,所有的 array_size 都是不超过 $10^5$ 的正整数。除了类型名称中或类型名称后的空格外,输入中不允许有额外的空格。换句话说,我们保证输入中不会出现连续的空格。

输出格式

对于每个测试用例,输出一行包含 “Case #x: y”(不含引号),其中 $x$ 是从 1 开始的测试用例编号,$y$ 表示以 Kibibyte 为单位的总分配内存大小,并向上取整到最接近的整数。

样例

输入 1

2
8
bool a;
char b;
int c;
long long d;
__int128 e;
float f;
double g;
long double h;
1
int a[1000];

输出 1

Case #1: 1
Case #2: 4

说明

在第二个样例中,内存使用量为 4000 字节,应向上取整为 4 Kibibytes。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.