题目大意
问在
n∗m
的点阵上,满足除端点外不经过其他点,且长度在
[l,r]
范围内的线段有多少条。
n,m<=100000
l,r<=15000
分析
这道题刚开始做的时候一直在往数论方向想,可是并没有搞出来。
其实互质这个条件不一定要用数论方法,也可以用容斥做。
这个问题可以转化成为
ans(x<=r)−ans(x<=l)+ans(x=l)
,其中
x
为线段长度。
那么考虑
ans(x<=lim)
怎么做。
ans(x<=lim)=∑lim−1i=1[(n−i)∗∑j2+i2<=lim2,(j,i)=1(m−j)]
第一个
∑
只需要枚举就可以了,第二个首先可以算出
j
的取值上限,那么问题就转化为了求