PyramidSequences
作者:杨景钦
关键词:最大公约数, 数形结合
题目描述
定义一个高度为的金字塔序列为如下的无限长序列:
现在给出和,令是高度为的金字塔序列, 是高度为的金字塔序列, 求有多少个不同的数对, 满足存在一个 使得
算法一
直接枚举所有, 注意到循环节是 于是可以暴力枚举。
复杂度
算法二
不妨将序列中的每个数以及和先,这样数列可以从开始 以后的讨论均按照之后的序列来讨论。
首先需要一点数形结合的想法。 我们把一个点对当成一个平面上的横坐标为, 纵坐标为的点。
令第个点为, 我们把第个点和第个点()顺次相连。 形成了一条优美的折线。
令为的最大公约数()
我们发现有些点被折线经过多次, 其他点只被经过一次。 通过一些显然的分析可以得到, 这些点的横纵坐标均为的倍数, 再仔细观察可以看出这样一张图。
于是可以看出, 我们可以将原地图分成的方块。 每个块内的只被经过一次的点有个, 而被经过多次的点可以很轻易的算出。 结果为
其中为, 为
复杂度