F. K-th Power 容斥,莫比乌斯
F. K-th Power
传送门:
牛客:https://ac.nowcoder.com/acm/contest/34866/F
cf:https://codeforces.com/group/5zHJ4CTyoU/contest/392060/problem/F
题意:求区间[l,r]中,不含有\(p^k\)因子的数字的个数。其中p是质数。
可以用容斥+莫比乌斯解决。
问题转换成求[1,r]和[1,l-1]含有\(p^k\)因子的数字的个数,然后相减。
对于求[l,r]中含有\(p^k\)因子数字的个数,设含有\(i^k\)因子的数字的个数为\(f(i)\)
则:\(ans=f(2)+f(3)+f(5)+...-f(2*3)-f(3*5)-f(2*5)...+f(2*3*5)...\)
所以对每个数统计出能由多少个不重复质数乘得,判断奇偶决定符号。如果由重复质数因子,则不是上式成员。
#include <bits/stdc++.h>
//#define ll long long
#define ll long long
const ll N = 1e7+10;
ll q_pow(ll a,ll b){
ll res=1;
while(b){
if(b&1)res=a*res;
a=a*a;
b>>=1;
}
return res;
}
ll q_sqrt(ll x,ll k){
ll l=0,r=1e9;
while(l<r){
ll m=(l+r+1)>>1;
if(q_pow(m,k)<=x){
l=m;
}
else r=m-1;
}
return l;
}
int pr[N];
bool ck[N];
std::vector<int>ve;
void init(){
for(int i=2;i<1e4;i++){
ll k=i*i;
for(ll j=k;j<N;j+=k)ck[j]=1;
}
for(ll i=2;i<N;i++){
if(!pr[i]){
ve.push_back(i);
for(ll j=i;j<N;j+=i)pr[j]++;
}
}
}
ll get(ll p,ll k){
if(k>60||p<2)return 0;
ll m=q_sqrt(p,k);
ll ans=0;
for(int i=2;i<N&&q_pow(i,k)<=p;i++){
if(ck[i])continue;
if(pr[i]&1)ans+=(p/q_pow(i,k));
else ans-=(p/q_pow(i,k));
}
return ans;
}
signed main(){
//std::ios::sync_with_stdio(false);
init();
ll l,r,k;
std::cin>>l>>r>>k;
std::cout<<r-l+1-(get(r,k)-get(l-1,k))<<"\n";
}
F. K-th Power 容斥,莫比乌斯的更多相关文章
- 【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数
Description 求第k个没有完全平方因子的数,k<=1e9. Solution 这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数. 然而k太大数组开不下来是吧,于是这么处理. 二分 ...
- AGC 005D.~K Perm Counting(容斥 DP 二分图)
题目链接 \(Description\) 给定\(n,k\),求 满足对于所有\(i\),\(|a_i-i|\neq k\)的排列的个数. \(2\leq n\leq 2000,\quad 1\leq ...
- HDU 5942 Just a Math Problem 容斥 莫比乌斯反演
题意:\( g(k) = 2^{f(k)} \) ,求\( \sum_{i = 1}^{n} g(i) \),其中\( f(k)\)代表k的素因子个数. 思路:题目意思很简单,但是着重于推导和简化,这 ...
- 广东工业大学2016校赛决赛-网络赛 1174 Problem F 我是好人4 容斥
Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...
- 51nod 1355 - 斐波那契的最小公倍数(Min-Max 容斥+莫比乌斯反演)
vjudge 题面传送门 首先我们知道斐波那契数列的 lcm 是不太容易计算的,但是它们的 gcd 非常容易计算--\(\gcd(f_x,f_y)=f_{\gcd(x,y)}\),该性质已在我的这篇博 ...
- cf900D. Unusual Sequences(容斥 莫比乌斯反演)
题意 题目链接 Sol 首先若y % x不为0则答案为0 否则,问题可以转化为,有多少个数列满足和为y/x,且整个序列的gcd=1 考虑容斥,设\(g[i]\)表示满足和为\(i\)的序列的方案数,显 ...
- BZOJ2440(容斥+莫比乌斯函数)
题目本质: 首先有如下结论: 而通过写一写可以发现: 举例来讲,36及其倍数的数,会被1的倍数加一遍,被4的倍数扣一遍,会被9的倍数扣一遍,而为了最终计数为0,需要再加回来一遍,所以在容斥里面是正号. ...
- 4.19 ABC F path pass i 容斥 树形dp
LINK:path pass i 原本想了一个点分治 yy了半天 发现重复的部分还是很难减掉 况且统计答案的时候有点ex. (点了别人的提交记录 发现dfs就过了 于是yy了一个容斥 发现可以直接减掉 ...
- CROC 2016 - Elimination Round (Rated Unofficial Edition) F - Cowslip Collections 数论 + 容斥
F - Cowslip Collections http://codeforces.com/blog/entry/43868 这个题解讲的很好... #include<bits/stdc++.h ...
- bzoj 2986: Non-Squarefree Numbers【容斥+莫比乌斯函数】
看到\( 10^10 \)的范围首先想到二分,然后把问题转化为判断\( [1,n] \)内有多少个是某个质数的平方和的数. 所以应该是加上是一个质数的平方的个数减去是两个质数的平方的个数加上是三个质数 ...
随机推荐
- svn 报 is not a working copy 错误
当时提交代码 svn 报 is not a working copy ,上网查找问题 要我重新拉代码下来 然后放进修改的代码重新提交,我觉得很不合理,我看了下我提交的代码文件有80多个,我在想是否 ...
- 获取内存及cpu信息
<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</ar ...
- Java数组之三种初始化及内存分析
内存分析 Java内存 堆: 1.存放new的对象和数组 2.可以被所有的线程共享,不会存放别的对象引用 栈: 1.存放基本变量类型(会包含这个基本类型的具体数值) 2.引用对象的变量(会存放这个引用 ...
- Java基础之变量与常量
变量 定义:可以变化的量. Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序种最基本的存储单元,其要素包括变量名,变量类型和作用域. //数据类型 变量名 = 值:可以使用逗号 ...
- OSS管理文件(Java)
工具类 package com.panchina.util; import com.alibaba.druid.util.StringUtils; import com.aliyun.oss.Http ...
- el-table 如果文字过多展示...
1 <el-table-column label="任务名称" width="120px" align="center" :show- ...
- HFSS仿真疑问
P15针在0.5pitch下,GS结构相比GSG更接近50Ω,但是在某些频点会有明显的反射,该频点插损比较大. 从TDR上看,阻抗呈正弦形状变化,有些奇怪. 空气盒子只增加了2mm,试了一下将空气盒子 ...
- 杭电OJ--1014
问题描述: 计算机模拟通常需要随机数.生成伪随机数的一种方法是通过窗体的函数seed(x+1) = [种子 (x) + STEP]% MOD其中 "%" 是模量运算符.这样的函数将 ...
- 2202.10.11 CSP-S 2021 测试总结
2022.10.11 CSP-S 2021 测试总结 这场打的好心累, \(T1\) 想了 \(1\) 个多小时才想出来的, \(T2\),\(T4\)题意赛时还没读明白. \(T1\):廊桥分配 \ ...
- js-label
js中的label就像一个对已有语句块的命名,函数有了函数名我们可以随时调用它,语句块有了语句名我们也可以随时调用它,将他运用到循环中可快速跳出 循环. var num = 0;for (var i ...