真题相乘
小蓝发现,他将1 至 1000000007 之间的不同的数与2021 相乘后再求除以1000000007 的余数,会得到不同的数。
小蓝想知道,能不能在1 至1000000007 之间找到一个数,与 2021 相乘后再除以1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数;
如果不存在,请在答案中提交 0。
枚举法
public class Test {
public static void main(String[] args) { new Test().run(); }
int N = 1000000007, M = 999999999;
void run() {
for (int i = 1; i <= N; i++)
if (i * 2021L % N == M) System.out.println(i);
}
}
求余数
给定两个整数 a、 b,其中 b ≠ 0,那么一定存在两个唯一的整数 q、 r,使得a=qb+r,0≤r<∣b∣
2021⋅a ′=1000000007⋅q+999999999,
q 不会超过 22021,借此减少枚举范围
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger ans = BigInteger.ONE;
for (int i = 2021; i > 1; i -= 2)
ans = ans.multiply(BigInteger.valueOf(i));
System.out.println(ans);
}
}