题目:经过提炼后, 题目的意思就是问[2,n] 内,不是次方数的数量 ,;

思路:

答案就是

原理是利用容斥,注意n开i次根是向下取整(这题巨卡精度)

这是大神的思路 ,, 我还没有理解, 先放着,等以后在来思考 , 先当模板使用

#include <bits/stdc++.h>

#define forn(i, n) for (int i = 0; i < int(n); i++)

using namespace std;

const int K = ;
const int N = * + ;
const long long INF64 = 3e18; int mu[K]; void precalc(){
static bool prime[K];
static int lst[K]; memset(prime, false, sizeof(prime));
forn(i, K) lst[i] = i; for (int i = ; i < K; ++i){
if (lst[i] == i) mu[i] = ;
for (int j = * i; j < K; j += i){
lst[j] = min(lst[j], lst[i]);
if (lst[j] == lst[i])
mu[j] = ;
else
mu[j] = -mu[i];
}
}
} int mx[K]; long long binpow(long long a, int b){
long long res = ;
while (b){
if (b & ){
if (res < INF64 / a) res *= a;
else return INF64;
}
if (b > ){
if (a < INF64 / a) a *= a;
else return INF64;
}
b >>= ;
}
return res;
} long long calc(long long n){
int pw = - __builtin_clzll(n);
for (int i = ; i <= pw; ++i){
if (mu[i] == ) continue;
while (binpow(mx[i], i) > n)
--mx[i];
} long long res = n - ;
for (int i = ; i <= pw; ++i)
res -= mu[i] * (mx[i] - ); return res;
} int get_sqrt(long long n){
int l = , r = ;
while (l < r - ){
int m = (l + r) / ;
if (m * 1ll * m <= n)
l = m;
else
r = m;
}
return (r * 1ll * r <= n ? r : l);
} long long ans[N]; int main() {
precalc();
int T;
scanf("%d", &T);
vector<pair<long long, int> > q; forn(i, T){
long long n;
scanf("%lld", &n);
q.push_back({n, i});
} sort(q.begin(), q.end(), greater<pair<long long, int> >());
mx[] = ;
mx[] = ;
mx[] = ;
for (int i = ; i < K; ++i)
mx[i] = ; forn(z, T){
long long n = q[z].first;
mx[] = get_sqrt(n);
ans[q[z].second] = calc(n);
} forn(i, T)
printf("%I64d\n", ans[i]);
return ;
}

F. Relatively Prime Powers (求([2,n],内不是次方的数量)的更多相关文章

  1. SGU 231 Prime Sum 求&lt;=n内有多少对素数(a,b)使得a+b也为素数 规律题

    题目链接:contest=0&problem=231">点击打开链接 题意: 求<=n内有多少对素数(a,b)使得a+b也为素数 思路: 我们发现全部素数间隔都是> ...

  2. Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)

    题目链接:http://codeforces.com/contest/1036/problem/F 题意: 题解:求在[2,n]中,x != a ^ b(b >= 2 即为gcd)的个数,那么实 ...

  3. Educational Codeforces Round 50 (Rated for Div. 2)F. Relatively Prime Powers

    实际上就是求在[2,n]中,x != a^b的个数,那么实际上就是要求x=a^b的个数,然后用总数减掉就好了. 直接开方求和显然会有重复的数.容斥搞一下,但实际上是要用到莫比乌斯函数的,另外要注意减掉 ...

  4. 省赛i题/求1~n内所有数对(x,y),满足最大公约数是质数的对数

    求1~n内所有数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数,最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a ...

  5. P1886 滑动窗口&&P1440 求m区间内的最小值

    声明:下面这两个题就不要暴力了,学一学单调队列吧 推荐博文:https://www.cnblogs.com/tham/p/8038828.html 单调队列入门题 P1440 求m区间内的最小值 题目 ...

  6. 省赛i题/求1~n内全部数对(x,y),满足最大公约数是质数的对数

    求1~n内全部数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数.最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a ...

  7. 洛谷 P1440 求m区间内的最小值

    传送门 思路 由于数据范围很大,所以使用单调队列,和滑动窗口这道题类似 首先第一个数输出\(0\),因为第一个数之前没有数 然后通过样例我们发现,最后一个数并没有派上什么用场,所以循环\(n-1\)轮 ...

  8. Relatively Prime Powers CodeForces - 1036F (莫比乌斯函数容斥)

    Relatively Prime Powers CodeForces - 1036F Consider some positive integer xx. Its prime factorizatio ...

  9. LG1440 求 m 区间内的最小值

    题目描述 一个含有 \(n\) 项的数列 (\(n≤ 2000000\)),求出每一项前的 \(m\) 个数到它这个区间内的最小值.若前面的数不足 \(m\) 项则从第 \(1\) 个数开始,若前面没 ...

随机推荐

  1. Qt Quick之Canvas

    QML中的Canvas,俗称画布,它用来定义一个绘图区域,可以使用ECMAScript代码来绘制直线,矩形,贝塞尔曲线,弧线,图片,文字等图元,还可以为这些图元应用填充颜色和边框颜色,甚至还可以进行低 ...

  2. URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)

    解决:鼠标悬于上方Alt + Enter 选择Ignore

  3. mysql的简单操作

    创建数据库并设定字符集: CREATE  DATABASE hidb CHARACTER SET ‘utf8’; 使用数据库: use hidb; 删除数据库: DROP DATABASE hidb; ...

  4. java基础知识(4)---设计模式

    设计模式:解决问题最行之有效的思想.是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. java中有23种设计模 ...

  5. 3.JasperReports学习笔记3-在浏览器生成PDF文件

    转自:https://i.cnblogs.com/posts?categoryid=921197 一.新建web工程,导入jasperreports所需的jar包,配置web.xml <serv ...

  6. linux日常管理-系统服务

    开机不启动不必要系统服务,节省硬件资源,解决安全隐患 调整服务有两种办法 没有这个命令就安装一下.执行这个命令,出现下面界面 按空格键选择或取消,tab切换选择确定或取消 系统服务留下 crond i ...

  7. BLUETOOTH_DEVICE_INFO 函数

    typedef struct _BLUETOOTH_DEVICE_INFO { DWORD dwSize; BLUETOOTH_ADDRESS Address; ULONG ulClassofDevi ...

  8. CentOS 7 配置 samba服务器

    一.在服务器端上安装软件并进行相关配置(以下操作需用用户root进行): 1.安装samba: yum -y install samba samba-client 2.启动服务并设置开机启动: sys ...

  9. 荧光分子的dynamic quenching 和 通常说的quenching的区别?

    quenching有两种,学术上分为dynamic quenching 和static quenching,我们通常说的quenching就是 static quenching. static que ...

  10. 使用python ftplib包递归下载文件夹及文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-06-11 09:35:49 # @Author : Yaheng Wang ...