2016集训测试赛(二十)Problem A: Y队列

Description

Solution

考虑给定一个\(n\), 如何求\(1\)\(n\)的正整数中有多少在队列中.
不难注意到我们只需要处理质数次方的情况即可, 因为合数次方会被其因数处理到. 同时我们考虑到可能存在两个正整数\(a\)\(b\)使得\(a^2 = b^3\), 因此我们要将这种情况减去, 也就是相当于要减去可以被表示为\(x^6\)的数的个数.
这样一来, 按照莫比乌斯函数容斥即可.
然后考虑如何求序列的第\(n\)项: 一种方法是二分; 同时我们也考虑到由于不在队列中的正整数十分稀疏, 因此我们直接对其进行逼近即可.

posted @ 2017-09-07 15:06  Zeonfai  阅读(170)  评论(0编辑  收藏  举报