SemiPerfectPower
作者: 权大磊
关键词: 数学公式推导
题目描述
定义了一种半完美数,一个数 被称为半完美数当且仅当存在 三个整数使得 。 现给出一个区间 之间有多少个半完美数。
数据范围:
时间限制:
空间限制:
题解
问题转化为 中半完美数个数。
第一可以发现,可以只考虑 或 。
当 且 为偶数时,设 , , 显然 , 转化为了原问题, 同理 为奇数设为 时也可以化为 。
我们先来看指数为 时, 我们另设未知数(接下来未知数与前面无关), 求 的 的个数, 可以发现若 有完全平方因子, 我们可以把它转移到 中去, 仍是合法形式, 且对应唯一一种, 所以我们可以枚举不含完全平方因子的数来计算。
我们枚举 , 又有 , 所以 ^ (开根自己脑补向下取整)。所以个数为 ^ 。 只用枚举到 ^。
然而当指数为 3 时, 我们将其设为 , 若果 有完全立方因子, 也可将其转入 中,同理得:
但有些数既可以表示成 又可以表示为 , 所以需要去重。
我们发现对于一个 , 。 设最大的,满足 , 那么 , 如果此时 那么 就无法表示为另一种形式。 化简此不等式得: ^ 。
所以此时 , 无平方因子, ^ 。
现在我们来求满足 , 但不满足 数的个数。
简记 表示 为无平方因子的数, 表示 为无立方因子的数。
要求的式子如下:
交换后两个求和式
再变
我们设
那么 ,
因为 互质,
就可以变为,
又有 , 所以
根据莫比乌斯函数定义:
再变一下:
现在就可做了。 方便计算,我们可以预处理一个数组 表示从 到 有多少个是 的倍数又不含完全平方因子的数来计算最后一个式子中的最后一部分。枚举 因子我们可以预处理出每个数的素因子有哪些,然后暴力用状压的方法算。
对于 暴力枚举就好了。
时间复杂度: 。
本人开始也不会做此题, 在网上发现 的题解, 所以没看懂(其实都差不多)或者觉得我有错的可以去他的博客看看, 连接:(http://vfleaking.blog.163.com/blog/static/174807634201352023221271/)