[关闭]
@yang12138 2019-05-22T20:32:28.000000Z 字数 1555 阅读 1492

2018 ICPC北京站C题-Pythagorean triple

未分类


原题链接:https://hihocoder.com/problemset/problem/1872

下文用到的数学符号:
表示的最大公约数。
表示的最小公倍数。
表示如果为真返回,否则返回
表示不能整除

题意:
问满足


的三元组有多少个。

解析:
要求的就是斜边小于等于商高三角形的个数。
首先本源商高三角形的结论是:


其中

在给定的情况下,一个本源商高三角形通过边乘同一个正整数可以拓展出个商高三角形,所以也就是求:


可知

先求


那么
记录,只有个这样的可以用数论分块求解,这部分可以通过二分,使用预处理好的差分计算。

再考虑求
同样的,设


那么
可以用类似求解的方法来求解

求解的时间复杂度是的,求解的时间复杂度是:

预处理的时间复杂度我不会算...不过在时进行计算也可以很快得出结果。

参考程序:https://paste.ubuntu.com/p/hmJmgFMV39/

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注