给定整数 N 和 M,找到有序对 (a, b) 的数量,使得 1≤a <b≤N 并且 ((M mod a) mod b) = ((M mod b) mod a)。
输入 第一行包含一个整数 T,即测试用例的数量。然后是测试用例。
每个测试用例的唯一一行包含两个整数 N、M。
输出 对于每个测试用例,在一行中输出问题的答案。
约束 1≤T≤1000
2≤N≤10 ^ 6
1≤M≤5⋅10 ^ 5
所有测试用例的 N 总和不超过 10 ^ 6
我尝试过 O (N ^ 2) 方法,但它提供了 TLE。需要一种新方法或任何想法
import java.util.Scanner;
class test {
public static void main(String[] args) {
try {
Scanner scn = new Scanner(System.in);
int testCase = scn.nextInt();
for (int i = 0; i < testCase; i++) {
int n = scn.nextInt();
int m = scn.nextInt();
int count = 0;
for (int j = 1; j < n; j++) {
for (int k = j + 1; k <= n; k++) {
if (((m % j) % k) == ((m % k) % j)) {
// System.out.print(j+" "+k);
// System.out.println();
count++;
}
}
}
System.out.println(count);
}
} catch (Exception e) {
return;
}
}
}