小蓝发现,他将 11 至 10000000071000000007 之间的不同的数与 20212021 相乘后再求除以 10000000071000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 11 至 10000000071000000007 之间找到一个数,与 20212021 相乘后 再除以 10000000071000000007 后的余数为 999999999999999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 00。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
int num = 0;
for (long i = 1; i <= 1000000007; i++) { //如果不定义i为long,判断时用的是
if (i * 2021 % 1000000007 == 999999999) { //i的数据范围,在乘法时会超出范围
System.out.println(i);
break; //如果没有这句会超时
}
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
long num = 0; //此处用long num=0仍然会超时
for (int i = 1; i <= 1000000007; i++) { //因为i * 2021 % 1000000007是在
num = i * 2021 % 1000000007; //i的地址进行计算,会超出范围
if (num == 999999999) { //只能将i或者2021定义为long型
System.out.println(i);
break;
}
}
}
}
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?
256MB=256*1024*1024B 1Byte=8bit(位)
32位=4Byte
或者把256MB化成位(bit)也可
结果为256*1024*1024*8/32=67108864(如果这样写需要改成long类型)
一个long类型可以乘以多个int,结果还是long型(体现在范围扩大了)