题目链接: spoj7001
题目大意:对于三维坐标系中的点{(x, y, z) | 0 <= x <= N, 0 <= y <= N, 0 <= z <= N},问这些点中有哪些是原点可以看到的。(原点除外)
题目可以转化为求gcd(x, y, z) == 1 的有序对(x, y, z)的数目。
由于是求三个数的最大公约数,此时欧拉函数已经有些局限了,而通过mobius反演仍能简洁的解决该问题。
我们构造f(d), F(d):
f(d) = | {(x, y, x) | gcd(x, y, z) == d, x <= N, y <= N, z <= N} |
F(d) = | {(x, y, z) | (d | gcd(x, y, z)), x <= N, y <= N, z <= N} |
则仍然有, 反演得。
此时,F(d) = (N / d) × (N / d) × (N / d)
因此有
我们要求的仍然是f(1)。
不过此时求出的f(1)是x, y, z 均大于1时的解, 还需加上位于坐标轴和坐标平面上的解。
|
|