F. Relatively Prime Powers (求([2,n],内不是次方的数量)
题目:经过提炼后, 题目的意思就是问[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],内不是次方的数量)的更多相关文章
- SGU 231 Prime Sum 求<=n内有多少对素数(a,b)使得a+b也为素数 规律题
题目链接:contest=0&problem=231">点击打开链接 题意: 求<=n内有多少对素数(a,b)使得a+b也为素数 思路: 我们发现全部素数间隔都是> ...
- 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)的个数,那么实 ...
- Educational Codeforces Round 50 (Rated for Div. 2)F. Relatively Prime Powers
实际上就是求在[2,n]中,x != a^b的个数,那么实际上就是要求x=a^b的个数,然后用总数减掉就好了. 直接开方求和显然会有重复的数.容斥搞一下,但实际上是要用到莫比乌斯函数的,另外要注意减掉 ...
- 省赛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 ...
- P1886 滑动窗口&&P1440 求m区间内的最小值
声明:下面这两个题就不要暴力了,学一学单调队列吧 推荐博文:https://www.cnblogs.com/tham/p/8038828.html 单调队列入门题 P1440 求m区间内的最小值 题目 ...
- 省赛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 ...
- 洛谷 P1440 求m区间内的最小值
传送门 思路 由于数据范围很大,所以使用单调队列,和滑动窗口这道题类似 首先第一个数输出\(0\),因为第一个数之前没有数 然后通过样例我们发现,最后一个数并没有派上什么用场,所以循环\(n-1\)轮 ...
- Relatively Prime Powers CodeForces - 1036F (莫比乌斯函数容斥)
Relatively Prime Powers CodeForces - 1036F Consider some positive integer xx. Its prime factorizatio ...
- LG1440 求 m 区间内的最小值
题目描述 一个含有 \(n\) 项的数列 (\(n≤ 2000000\)),求出每一项前的 \(m\) 个数到它这个区间内的最小值.若前面的数不足 \(m\) 项则从第 \(1\) 个数开始,若前面没 ...
随机推荐
- Hadoop问题集锦
1.Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup 使用Spark进行处理的时候 ...
- BZOJ3307:雨天的尾巴
浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...
- 类方法,实例方法,静态方法,@property的应用
class test(object): h = 'hello' w = 'world' def demo(self): print("demo") def test_class(s ...
- JAVA 1.7并发之Fork/Join框架
在之前的博文里有说过executor框架,其实Fork/Join就是继承executor的升级版啦 executor用于创建一个线程池,但是需要手动的添加任务,如果需要将大型任务分治,显然比较麻烦 而 ...
- HTTP 的若干问题
1 HTTP无状态协议和Connection:Keep-Alive容易犯的误区 HTTP无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态.从另一方面讲,打开一个服务器上的 ...
- ng2-升级脚手架到最新版本
//先卸载,后安装 npm uninstall -g @angular/cli npm cache clean npm install -g @angular/cli@latest
- js 面向对象代码
贴上一段同事写的代码,值的纪念 <script type="text/javascript"> //创建箱子类 function Box(option) { var s ...
- go 语言 基础 类型(1)
变量 使用关键字 var定义变量,自动初始化为0值.如果提供初始化值,可省略变量类型,由编译器自动推断. 在函数内部可以使用 := 方式定义变量 func main() { x := 123 } 可一 ...
- VS 关于无法打开项目文件,此安装不支持该项目类型的问题
用VS打开后有时会出现类似: 无法打开项目文件,此安装不支持该项目类型 的错误,这个错误一般都是由于用低版本VS打开高版本项目文件造成的 其中包括: 1.用VS2003 打开包括VS2005以上版本项 ...
- Spring5.0的第一次尝鲜
对于这次尝鲜,说白了和Spring5.0的新特性基本没有多大的关系,如果说您不小心进来了,却发发现文章的内容和标题似乎不太匹配,那么我将是非常的抱歉,因为这浪费了您宝贵的时间.但是我还是要说:因为这确 ...