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 容斥,莫比乌斯的更多相关文章

  1. 【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数

    Description 求第k个没有完全平方因子的数,k<=1e9. Solution 这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数. 然而k太大数组开不下来是吧,于是这么处理. 二分 ...

  2. AGC 005D.~K Perm Counting(容斥 DP 二分图)

    题目链接 \(Description\) 给定\(n,k\),求 满足对于所有\(i\),\(|a_i-i|\neq k\)的排列的个数. \(2\leq n\leq 2000,\quad 1\leq ...

  3. HDU 5942 Just a Math Problem 容斥 莫比乌斯反演

    题意:\( g(k) = 2^{f(k)} \) ,求\( \sum_{i = 1}^{n} g(i) \),其中\( f(k)\)代表k的素因子个数. 思路:题目意思很简单,但是着重于推导和简化,这 ...

  4. 广东工业大学2016校赛决赛-网络赛 1174 Problem F 我是好人4 容斥

    Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...

  5. 51nod 1355 - 斐波那契的最小公倍数(Min-Max 容斥+莫比乌斯反演)

    vjudge 题面传送门 首先我们知道斐波那契数列的 lcm 是不太容易计算的,但是它们的 gcd 非常容易计算--\(\gcd(f_x,f_y)=f_{\gcd(x,y)}\),该性质已在我的这篇博 ...

  6. cf900D. Unusual Sequences(容斥 莫比乌斯反演)

    题意 题目链接 Sol 首先若y % x不为0则答案为0 否则,问题可以转化为,有多少个数列满足和为y/x,且整个序列的gcd=1 考虑容斥,设\(g[i]\)表示满足和为\(i\)的序列的方案数,显 ...

  7. BZOJ2440(容斥+莫比乌斯函数)

    题目本质: 首先有如下结论: 而通过写一写可以发现: 举例来讲,36及其倍数的数,会被1的倍数加一遍,被4的倍数扣一遍,会被9的倍数扣一遍,而为了最终计数为0,需要再加回来一遍,所以在容斥里面是正号. ...

  8. 4.19 ABC F path pass i 容斥 树形dp

    LINK:path pass i 原本想了一个点分治 yy了半天 发现重复的部分还是很难减掉 况且统计答案的时候有点ex. (点了别人的提交记录 发现dfs就过了 于是yy了一个容斥 发现可以直接减掉 ...

  9. CROC 2016 - Elimination Round (Rated Unofficial Edition) F - Cowslip Collections 数论 + 容斥

    F - Cowslip Collections http://codeforces.com/blog/entry/43868 这个题解讲的很好... #include<bits/stdc++.h ...

  10. bzoj 2986: Non-Squarefree Numbers【容斥+莫比乌斯函数】

    看到\( 10^10 \)的范围首先想到二分,然后把问题转化为判断\( [1,n] \)内有多少个是某个质数的平方和的数. 所以应该是加上是一个质数的平方的个数减去是两个质数的平方的个数加上是三个质数 ...

随机推荐

  1. 微信小程序 - canvas实现多行文本 ,实现文本断行

    1.canvas绘制文本坑点 绘制的文本不管多长,永远只有一行,不会断行. 2.解决思路 根据每行文本字数来断行,超出的就向下排列. 由于 canvas绘制文本的语法如下: context.fillT ...

  2. axios进行图片上传

    进行图片的上传,一定要注意headers的设置:             headers:{"Content-Type":"multipart/form-data&quo ...

  3. Vite项目打包配置详解

    一:vite构建项目 配置base 1.base配置打包公共路径 打开package.json 做项目时可以不去掉 好了,在以上你构建了vite,并配置了最简单的操作后,你准备配置vite.confi ...

  4. 【python学习】数据结构第一节

    1.访问元组或列表中的值      (注:元素是从0开始从左往有编号的,或者从右向左编号[-1开始]) 列表 x1 = [1,2,3,4] 元组 x2 =(1,2,3,4) print(x2[0]) ...

  5. Linux系统备份与还原——restore还原命令

    之前有讲到Linux下的备份工具dump,有备份自然就有还原,而还原备份文件采用的命令则是restore restore命令格式: restore [模式] [选项] 模式: 有四种模式且不能混用,只 ...

  6. el-dialog 嵌套子组件数据不刷新

    <!-- 展示通道测量值 -->     <el-dialog :title="analogTitle" :visible.sync="analogOp ...

  7. Dockerfile 参考

    Dockerfile:FROM openjdk:8u252-jdkENV JHIPSTER_SLEEP=0 \ JAVA_OPTS="" \ LOGFILE="" ...

  8. MacOS如何使用语音输入

    Siri是Apple旗下强大的语音助手,而Siri的语音输入是必不可少的的存在.目前的MacOS中都有语音听写功能,可以让它把我们的语音转化成为文字.如果你此时不想打字,或是不方便打字的情况下,这个功 ...

  9. python 实现两个多维数组去重处理

    a = [[1,2,3,4],[5,6,7,8],[11,12,13,14],[23,24,12,11]] b = [[5,6,7,8],[23,24,12,11]] c = [] for i in ...

  10. WinExec("D:\\MY_tool\\APPLICATION\\calc.exe", SW_SHOW);

    1 #pragma comment(lib,"shell32.lib")2 3 4 ShellExecute(NULL, NULL,"calc.exe", NU ...