首页 > 试题广场 >

计算机内存

[编程题]计算机内存
  • 热度指数:15923 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}我们可以看到题目描述的上方有一个空间限制 256\,\mathrm{MB}。在计算机中,一个整数占据 4 字节的内存;
\hspace{23pt}\bullet\,1\,\mathrm{MB}=1024\,\mathrm{KB}
\hspace{23pt}\bullet\,1\,\mathrm{KB}=1024\,\mathrm{B}
\hspace{23pt}\bullet\,1\,\mathrm{B}=1 字节。
\hspace{15pt}那么,给定 n MB 的内存,请问可以存储多少个整数?

输入描述:
\hspace{15pt}在一行中输入一个整数 n1 \leqq n \leqq 256),表示内存大小(单位 MB)。


输出描述:
\hspace{15pt}输出一个整数,表示在 n MB 内存中最多可以存储的整数个数。
示例1

输入

1

输出

262144

说明

\hspace{15pt}1\,\mathrm{MB}=1024\times1024\,\mathrm{B}=2^{20}\,\mathrm{B},每个整数占用 4 字节,因此可存储 2^{20}/4=262144 个整数。
示例2

输入

256

输出

67108864

说明

\hspace{15pt}256\,\mathrm{MB}=256\times2^{20}\,\mathrm{B},每个整数占用 4 字节,因此可存储 256\times2^{20}/4=256\times2^{18}=67108864 个整数。

备注:
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-06-03 优化题面文本与格式。
#include <stdio.h>

int main() {
    int n = 0;
    long int count = 0;

    scanf("%d\r\n", &n);

    if (n >= 1 && n <= 256) {

        //   count = (1024 * 1024 * n) / 4;

        count = 262144 * n;

        printf("%ld\r\n", count);

        return 0;

    } else {

        printf("输入的数字有误,请重新输入\r\n");

        return -1;

    }
   
}
发表于 2025-10-02 20:56:06 回复(0)
#include <stdio.h>
#include<math.h>
int main() {
    int  a;
    int b = pow(2, 20);
    scanf("%d", &a);

    printf("%d", a * b / 4);
    return 0;
}

发表于 2025-09-17 22:44:22 回复(0)
#include <stdio.h>
#include <math.h>

int main() {
    int n;
    scanf("%d",&n);
    int a=n*(pow(1024,2));
    int final=a/4;
    printf("%d",final);
    return 0;
}
发表于 2025-09-08 09:56:23 回复(0)

也许位运算是最快的解决方式,代码中含有注释。

#include <stdio.h>

int main() {

    int n = 0;

    scanf("%d", &n);

    /*
    * n << 18 相当于 n * 1024 * 1024 / 4 ==> n * 2^10 * 2^10 * 2^{-2}
    * ==> n * 2^{10 + 10 -2} ==> n * 2^18
    * 
    * 整数的乘除法与左/右移的关系:
    * 1. 除法
    *   n / 2 ==> n / 2^1 ==> n >> 1
    *   n / 4 ==> n / 2^2 ==> n >> 2
    * 2. 乘法
    *   n * 2 ==> n * 2^1 ==> n << 1
    *   n * 4 ==> n * 2^2 ==> n << 2
    */
    int result = n << 18;

    printf("%d", result);

    return 0;
}
发表于 2025-08-05 19:54:43 回复(0)