#1153. FCC的内存限制(memory)

FCC的内存限制(memory)

题目背景

在S/J-PSC系列比赛中,FCC的判题机是以程序申请的内存来计算内存限制的。

例如:int a[1000000];就会申请 106×4÷1024÷1024=3.814710^6 \times 4 \div 1024 \div 1024 = 3.8147 MB的空间。

而在C++语言中,1个int类型的变量占用4B的内存,1个long long类型的变量占用8B的内存。

题目描述

对于因数组开大而导致MLE爆0的小 l l 来说,他可恨死了计算空间。现在给定要存储的数据的值域 n n 以及内存限制 m m ,他可以选用intlong long进行存储。请你帮忙计算,在使用内存小于内存限制且数据能正确存储的情况下,他最大能开多长的数组?

输入输出格式

输入格式

从标准输入读入数据。共2行。

第一行为一个正整数m m ,代表题目的内存限制(单位MB)

第二行为一个实数 n n ,代表要存储的数据的值域。

输出格式

共1行。一个正整数代表数组最大的长度。

输入输出样例

10
100
2621439

样例1解释

n=100 n = 100,因此使用int存储。10MB内存可以存储10×1024×1024÷4=2621440 10 \times 1024 \times 1024 \div 4 = 2621440 个int变量。所以最大长度为2621439。

10
2147483648
1310719

样例2解释

n=2147483648 n = 2147483648,因此使用long long存储。10MB内存可以存储10×1024×1024÷8=1310720 10 \times 1024 \times 1024 \div 8 = 1310720 个long long变量。所以最大长度为1310719。

数据规模与约定

对于100%的数据,保证输入数据为整数。

测试点编号 m m n n
1~3 0<m100 0 < m \leq 100 65536n65536 -65536 \leq n \leq 65536
4~7 0<m8192 0 < m \leq 8192 262n2631 -2^{62} \leq n \leq 2^{63}-1
8~10 0<m65536 0 < m \leq 65536