在一行中输入一个整数
(
),表示内存大小(单位 MB)。
输出一个整数,表示在
MB 内存中最多可以存储的整数个数。
1
262144
,每个整数占用
字节,因此可存储
个整数。
256
67108864
,每个整数占用
字节,因此可存储
个整数。
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-06-03 优化题面文本与格式。
#include <stdio.h>
#include <math.h>
int main() {
int n = 0,num = 0;
scanf("%d",&n);
num = (n * pow(2,20))/4;
printf("%d",num);
return 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;
} 也许位运算是最快的解决方式,代码中含有注释。
#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;
}