题目大意
给出n和k,问有多少对(a,b)满足a,b是在区间(n,k)的整数且ab-n可以被(a-n)(b-n)整除。
0≤n≤100000,n<k≤1018
Solution
如果n=0那么答案为
(k−1)2
否则设
c=a−n,d=b−n
,那么题目中的
(a−n)(b−n)|ab−n
就可以变为
cd|(c+n)(d+n)−n
,再设
pcd=(c+n)(d+n)−n=cd+cn+dn+n2
于是
d=n2−n+ncpc−c−n
由于c,d为正整数,所以
pc−c−n
也是正整数,我们假设
c≤d
那么
c≤n2−n+ncpc−c−n
∴(p−1)c2−2cn+n−n2≤0
解不等式得到:
c≤2n+4n2−2(p−1)(n−n2)√2(p−1)
由于p为不小于1的正整数,所以
2n+4n2−2(p−1)(n−n2)√2(p−1)
显然当p=2时为最大值,即
2n+6n2−2n√2
而
2n+6n2−2n√2<(2√+1)n
所以我们只用枚举c到
(2√+1)n
然后得出d,判断是否可行。
但是这样是不够的,我们发现当c较大时p是较小的,于是可以直接枚举p
我的程序在cc上莫名狂WA拍了n久都没有找到WA的地方23333