Volume 12

551. Sum of digits sequence

表示的数位和, 考虑, 那么只要, 其实, 其中.

不妨令表示从开始, 根据递推式, 直到的最小, 以及当前的值(的值是一个pair).

的转移比较容易, 考虑枚举当前最高位的数字, 那么可以从转移过来, 具体来说, . 初始边界值是.

知道了数组之后, 我们显然就可以通过从高到低依次枚举的每一位来确定.

552. Chinese leftovers II

这个题实际上就是要求. 令为前个素数的乘积, 那么有下面一个同余方程:

不妨令, 那么可以得到.

那么假设我们得到了的值, 显然就可以递推出的值了. 由于以内只有个素数, 于是可以直接暴力更新.

553. Power sets of power sets

表示选出来集合的并恰好有种不同数字, 且分成了个连通分量的方案数. 显然. 考虑如何计算, 一个显然的递推式就是, 表示单独拿出来一个大小为的联通块, 为了不重复计数, 这个联通块必须包含最小的数. 剩下的问题就是如何计算了.

表示选出若干集合, 他们的并是全集的方案数, 这个打了下表可以知道就是A003465, 于是. 知道了以后, 的式子就显而易见了.

这样我们就有了一个的算法, 滚动数组一下很快就跑出来了. 但是这题还可以用生成函数做的更好.

, 定义三个生成函数, :

那么, 我们可以知道的生成函数是:

其中.

于是用FFT/NTT就可以在的复杂度解决了.

554. Centaurs on a chess board

可以考虑下题目中的是如何得到的. 考虑把的棋盘以为单位划分成, 那么显然任意一个的小块最多只能包含一个centaur. 于是一个的棋盘最多只能放个centaur. 然后通过简单的推导可以知道. 然后用lucas定理计算即可.

555. McCarthy 91 function

和之前的#340 Crazy Function一样, 可以知道这个东西是一个分段函数. 打个表就可以发现为周期, 每个周期内是一个公差为的等差数列, 最高项是. 于是找不动点其实就是找一个区间, 使得, 化简下得到. 于是只要枚举, 然后再枚举就可以解出. 求出区间后就是一个等差数列求和的问题.

556. Squarefree Gaussian Integers

可以回想起#193的公式, 这个题稍微改下那个公式就好了: . 其中表示有多少proper Gaussian integer满足. 至于看着参考这个数列A120630.

557. Cutting triangles

根据梅涅劳斯定理, 可以得到, 枚举以及, 然后就可以计算出了.

558. Irrational base

这个题的方法有很多.

方法一

注意到是数列的特征方程. 我们知道有个Zeckendorf's theorem, 可以用Fibonacci数表示一个整数. 我们还知道有个Golden ratio base, 可以用base-来表示一个整数. 事实上base-和Fibonacci-base是可以对应的. 于是猜测可以用来代替. 为了处理出, 可以把一开始乘上一个较大的, 然后贪心做, 从打到小依次减过去, 当然需要保证相邻两项差大于等于. 这个算法的解释可以在论坛中看到, 这个以及这个.

方法二

显然可以得到, 于是每个其实都可以用来表示. 然后可以发现当且仅当它的范数小于. 于是, 我们有了比较两个数大小的手段, 可以算出的范数是下面这个矩阵的行列式值

于是定义出加,减,乘,除, 大小比较等操作符. 就可以贪心地求出需要的项数. 参考论坛里面这个.

方法三

参考Golden ratio base, 我们知道如果当前表示不够优的话, 可以用一些规则来使得这个表示变得更优. 首先我们知道, 也就是说如果知道了的表示, 以及的表示, 直接相加可以得到一个的表示, 而的表示可以由的表示得到.

考虑这几个式子, 我们可以根据这三个式子来优化一个不是最优的式子. 于是只要知道的表示, 理论上就可以求出其他所有的表示. 的表示为.

559. Permuted Matrices

will publish soon.

560. Coprime Nim

打表观察可知如果是偶数那么, 如果是质数或者那么, 否则其中的最小质因子. 计算出每个中出现的次数, 然后就是对次异或卷积, 用fwt就好了.

561. Divisor Pairs

首先可以知道. 当的形式是时, , 由于是奇数, 只有会对答案有贡献. 当的形式是时, , 令, , 那么是奇数, 于是只有会对答案有贡献. 当形式为或者时, 是奇数, 不会对答案有任何贡献.

于是, 当时, ; 当时, . 其中表示的二进制表示中末尾的个数. 于是,

562. Maximal perimeter

首先根据pick定理, 可以知道这个三角形的面积必然是. 不妨假设, 那么显然有. 也就是说如果知道了, 可以用扩展欧几里得算法求出. 考虑到点肯定和圆周非常接近, 于是可以考虑直接暴力枚举.

563. Robot Welders

可以猜测每个数的最大质因子不会超过, 就是. 于是可以dfs生成所有在以内的数, 暴力枚举约数就好了. 也可以考虑枚举最长边, 显然不会超过, 然后根据的限制枚举短边, 这个应该会快很多.

564. Maximal polygons

假设我们已经知道了多边形的每条边长, 那么面积最大的多边形显然一定是圆的内接多边形(称作Cyclic Polygon). 这个圆可以通过二分计算出来.

于是可以暴力枚举变长和为的所有多边形, 然后计算贡献. 枚举的时候需要按照边长度递增或递减枚举, 边长度集合一样的多边形一起计算就好了.

565. Divisibility of sum of divisors

will publish soon.

566. Cake Icing Puzzle

will publish soon.

567. Reciprocal games I

will publish soon.

568. Reciprocal games II

will publish soon.

569. Prime Mountain Range

will publish soon.

570. Snowflakes

will publish soon.

571. Super Pandigital Numbers

will publish soon.

572. Idempotent matrices

will publish soon.

573. Unfair race

will publish soon.

574. Verifying Primes

will publish soon.