HolyNumbers
作者:王子健 汪乐平
关键词:动态规划、数学
题目简述
定义一个正整数为圣光数字当且仅当能写成之间质数的若干奇数次幂的乘积的形式,求区间中有多少圣光数字。
算法
先将中的所有质数预处理出来,设一共有个质数,用表示第个质数。
考虑使用动态规划来解决,设表示只考虑第个到第个质数,中有多少数能被这些质数的若干奇数次幂的乘积表示。
转移时分两种情况,第一种是中所有的数都可以用第个到第个质数的奇数次幂的乘积表示的情况,即。第二种先枚举的若干奇数次幂,则符合条件的数字可以写成的形式,且要能够被第个到第个质数的若干奇数次幂的乘积表示,即。
实际转移时有用的第二位状态并不多,因为当时只有满足的形式才符合要求,我们可以直接通过二分查找来计算这样的。经实测极限数据仅需调用函数不到次即可。
时间复杂度约为。