由于辗转相减可得 gcd(Ai+B,Ci+D)=gcd((A−C)i+B−D,Ci+D),不难发现直接这样做一遍类似 exgcd 就能将 A→0,接下来令 gcd(Ai+B,Ci+D)=gcd(b,ci+d),现在就变成求 ∑i=1ngcd(b,ci+d),其中 b,d∈[−V2,V2],c∈[1,V]。
首先将 b←∣b∣,看到 ∑gcd 形式套路地转化成 ∑x∣bφ(x)∑i=1n[x∣ci+d],对于后半部分的 ∑[x∣ci+d] 可以写成二元一次不定方程 ci+xk=−d,其中 i,k 为未知数,通过 exgcd 解这个方程可以得到 i=px+q,p∈Z(q 已知)的形式,求一下在 [1,n] 中有多少个 p 即可。
总复杂度为 O(TVlogV+V2),瓶颈在预处理 [1,V2] 的欧拉函数,感觉还是比较劣,不知道有没有更快的做法。