首先可以将每种方案与每条两端点为葡萄干且不经过其余葡萄干的线段一一对应,那么问题转化为数这样的线段条数。
斜率为 0 或无穷的线段显然有 2n(n−1) 条,其余的线段,斜率为正的有 n∑x1=1n∑y1=1n∑x2=x1+1n∑y2=y1+1[gcd(x2−x1,y2−y1)=1]=n∑i=1n∑j=1[gcd(i,j)=1](n−i)(n−j)
综合一下,再加以推导,有 2n(n−1)+2n∑i=1n∑j=1[gcd(i,j)=1](n−i)(n−j)= 2n(n−1)+2((n−1)2+2n∑i=2(n−i)i−1∑j=1[gcd(i,j)=1](n−j))= 4n2−6n+2+4n∑i=2(n−i)(nφ(i)−12iφ(i))= 4n2−6n+2+n∑i=2(4n2φ(i)−6nφ(i)i+2φ(i)i2)= 4n2n∑i=1φ(i)−6nn∑i=1φ(i)i+2n∑i=1φ(i)i2
杜教筛即可。
代码:
1 |
|