1.题目描述
他将 11 至 1000000007之间的不同的数与 2021相乘后再求除以 1000000007的余数,会得到不同的数。 小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后 再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。
2.代码
import java.math.BigInteger;
import java.lang.String;
public class Multiply{
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("2021");
BigInteger bigInteger1 = new BigInteger("999999999");
BigInteger bigInteger3 = new BigInteger("1000000007");
for (int i = 1; i <= 1000000007; i++) {
BigInteger bigInteger2 = new BigInteger(String.valueOf(i));
if (((bigInteger2.multiply(bigInteger)).mod(bigInteger3)).equals(bigInteger1)) {
System.out.println(i);
}
}
}
3.错误思路
要注意整数的范围,极端情况1000000007*2021=2021000014147 超出整数的最大范围
public class Multiply{
public static void main(String[] args) {
for (int i = 1; i <= 1000000007; i++) {
if ((i*2021)%1000000007==999999999) {
System.out.println(i);
}
}
}
}