题目中要求的式子是: b × gcd ( a , b ) m o d ( a + b ) = 0 b \times \gcd(a, b) \mod (a + b) = 0 b×gcd(a,b)mod(a+b)=0
设 gcd ( a , b ) = x , a = x × i , b = x × j \gcd(a, b) = x,~a = x \times i,~b = x \times j gcd(a,b)=x, a=x×i, b=x×j
条件变为:
- x × j ∗ x m o d ( ( i + j ) × x ) = 0 x \times j * x \mod ((i + j) \times x) = 0 x×j∗xmod((i+j)×x)=0
- 1 ≤ x ∗ i ≤ n 1 \le x * i \le n 1≤x∗i≤n, 1 ≤ x ∗ j ≤ m 1 \le x * j \le m 1≤x∗j≤m
- gcd ( i , j ) = 1 \gcd(i, j) = 1 gcd(i,j)=1
根据第一个条件可知 j × x j \times x j×x 是 i + j i + j i+j 的倍数,因为 gcd ( j , i + j ) = 1 \gcd(j, i + j) = 1 gcd(j,i+j)=1,所以 x x x 是 i + j i + j i+j 的倍数,所以 x ≥ i + j x \ge i + j x≥i+j,然后根据第二个式子就知道 i ≤ n , j ≤ m i \le \sqrt n,~j \le \sqrt m i≤n, j≤m。
枚举 ( i , j ) (i, j) (i,j) 即可,复杂度是 O ( n × m × log ( min ( n , m ) ) ) O(\sqrt n \times \sqrt m \times \log(\min(n, m))) O(n×m×log(min(n,m)))。