codechef SHORT

来源:互联网 发布:天子网络 编辑:程序博客网 时间:2024/05/21 15:05

题目大意

给出n和k,问有多少对(a,b)满足a,b是在区间(n,k)的整数且ab-n可以被(a-n)(b-n)整除。
0n100000,n<k1018

Solution

如果n=0那么答案为(k1)2
否则设c=an,d=bn,那么题目中的(an)(bn)|abn就可以变为cd|(c+n)(d+n)n,再设pcd=(c+n)(d+n)n=cd+cn+dn+n2
于是d=n2n+ncpccn
由于c,d为正整数,所以pccn也是正整数,我们假设cd
那么cn2n+ncpccn
(p1)c22cn+nn20
解不等式得到:c2n+4n22(p1)(nn2)2(p1)
由于p为不小于1的正整数,所以2n+4n22(p1)(nn2)2(p1)显然当p=2时为最大值,即2n+6n22n22n+6n22n2<(2+1)n
所以我们只用枚举c到(2+1)n然后得出d,判断是否可行。
但是这样是不够的,我们发现当c较大时p是较小的,于是可以直接枚举p

我的程序在cc上莫名狂WA拍了n久都没有找到WA的地方23333

2 0
原创粉丝点击