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] \)内有多少个是某个质数的平方和的数. 所以应该是加上是一个质数的平方的个数减去是两个质数的平方的个数加上是三个质数 ...
随机推荐
- ListView,ScrollView,RecyclerView上下滑动监听
在项目中有这样需求要对ListView或ScrollView或RecyclerView滚动进行监听,来做一些处理,下面来看对应实现 一:Listview上下滑动监听 通过实现AbsListView.O ...
- net6 - System.ComponentModel.DataAnnotations Attribute
using System; using System.Web.DynamicData; using System.ComponentModel.DataAnnotations; [MetadataTy ...
- Spark之详解及性能优化
一.spark简介 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架. Spark是用Scala程序设计语言编写而成,运行于Java虚拟机(JVM)环境之上.目前支持如下程 ...
- 串口USART(续二)
通过前面的分析知道,在LPC824中,USART所拥有的配置寄存器有很多,但在一般情况下,如果只是简单地使用收发功能,则只需要使用到配置寄存器CFG.波特率发生器寄存器BRG.中断使能读取和置位寄存器 ...
- Mac如何卸载软件 Mac如何删除软件
初次接触Mac苹果电脑的用户可能不知道如何卸载已经装好的应用软件,之前有给大家介绍Mac如何安装软件,现在教大家如何卸载软件,其实非常简单,让我们看看吧: 1.首先我们打开Finder,就是我们Doc ...
- 记——flask实现全文搜索
参考: flask入门和进阶十(实现全文搜索)已解决:https://blog.csdn.net/chengmo123/article/details/100552287 一.首先安装flask-wh ...
- MFC编辑框字符显示时无法换行的问题解决
字符串结尾加上"\r\n": 编辑框属性设置:Auto HScroll为False,Multiline为True,Want Return为True.
- 华为光猫HG8346V5配置
- 1.2 C语言--函数与数组
函数 函数的定义 返回值类型函数名(类型形参名[,--]){ 函数体 } 除了没有访问修饰符外,基本等同于java的函数. 良好的程序设计风格要求即使没有返回值,也要使用return;作为最后一条语句 ...
- 【七侠传】冲刺阶段--Day2
[七侠传]冲刺阶段--Day2 团队成员 20181221曾宇涛 20181202李祎铭 20181209沙桐 20181215薛胜瀚 20181216杨越麒 20181223何家豪 20181232 ...