题目链接

计算机内存

题目描述

在计算机中,一个整数(int 类型)通常占据 4 字节的内存。存储单位的换算关系如下:

  • 1 KB (Kilobyte) = 1024 Bytes
  • 1 MB (Megabyte) = 1024 KB

给定 M MB 的内存,请问最多可以存储多少个整数?

输入描述: 输入一个整数 M (1 ≤ M ≤ 1024),表示内存大小(单位 MB)。

输出描述: 输出一个整数,表示在 M MB 内存中最多可以存储的整数个数。

解题思路

本题是一个单位换算和算术计算问题。解题步骤如下:

  1. 读取输入:读取表示内存大小的整数 M
  2. 单位换算:将内存大小从 MB 统一换算成字节 (Bytes)。
    • 首先,将 MB 转换为 KB:M_KB = M * 1024
    • 然后,将 KB 转换为 Bytes:Total_Bytes = M_KB * 1024 = M * 1024 * 1024
  3. 注意数据类型:计算 M * 1024 * 1024 的结果可能会超过普通 32 位整型(int)的表示范围,导致溢出。为了安全地存储这个中间结果,应使用 64 位整型(在 C++ 中是 long long,在 Java 中是 long)。Python 的整数类型可以自动处理大数,无需担心。
  4. 计算整数个数:一个整数占用 4 字节。用总字节数除以 4,即可得到可以存储的整数个数:Count = Total_Bytes / 4
  5. 输出结果:将计算出的整数个数输出。

综合公式为:Count = (M * 1024 * 1024) / 4

代码

#include <iostream>

using namespace std;

int main() {
    // 使用 long long 防止中间结果溢出
    long long m;
    cin >> m;
    
    // 计算可以存储的整数个数
    long long count = (m * 1024 * 1024) / 4;
    
    cout << count << endl;
    
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 使用 long 防止中间结果溢出
        long m = sc.nextLong();
        
        // 计算可以存储的整数个数
        long count = (m * 1024 * 1024) / 4;
        
        System.out.println(count);
    }
}
# Python 的整数类型可以自动处理大数,无需担心溢出
m = int(input())

# 计算可以存储的整数个数
# 使用 // 进行整数除法
count = (m * 1024 * 1024) // 4

print(count)

算法及复杂度

  • 算法:基础单位换算和算术。
  • 时间复杂度: - 仅涉及常数时间的计算。
  • 空间复杂度: - 仅需常数空间存储变量。