传送门

首先,进行如下处理

如果$L$是$K$的倍数,那么让它变成$\frac{L}{K}$,否则变成$\frac{L}{K}+1$

把$H$变成$\frac{H}{K}$

那么,现在的问题就变成了在$[L,H]$范围内选$n$个数并令他们的$gcd$为$1$的方案数

然后令$f[i]$表示选出的数最大公约数为$i$且所有数不全相同的方案数,那么设$x$为$[L,H]$之间$i$的倍数的个数,那么$f[i]=x^n-x$

然而因为这种情况求出来的只是有公约数为$i$的情况,所以还要容斥一波搞掉公约数为$2*i,3*i...$的情况,只要减一下就好了

然后如果$L$为$1$那么是可以选的所有数都是$1$的,那么答案$+1$

 //minamoto
#include<cstdio>
const int N=1e5+,mod=1e9+;
int n,K,L,H,f[N];
int ksm(int x,int y){
int res=;
while(y){
if(y&) res=1ll*res*x%mod;
x=1ll*x*x%mod,y>>=;
}
return res;
}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%d%d%d%d",&n,&K,&L,&H);
L=L%K?L/K+:L/K;H/=K;
if(L>H) return puts(""),;
for(int i=;i<=H-L;++i){
int l=L,r=H;
l=l%i?l/i+:l/i;r/=i;
if(l>r) continue;
f[i]=(ksm(r-l+,n)-(r-l+)+mod)%mod;
}
for(int i=H-L;i;--i)
for(int j=(i<<);j<=H-L;j+=i)
f[i]=(f[i]-f[j]+mod)%mod;
if(L==) (f[]+=)%=mod;
printf("%d\n",f[]);
return ;
}

洛谷P3172 [CQOI2015]选数(容斥)的更多相关文章

  1. [bzoj3930] [洛谷P3172] [CQOI2015] 选数

    Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...

  2. (noip模拟十七)【BZOJ3930】[CQOI2015]选数-容斥水法

    Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...

  3. P3172 [CQOI2015]选数(莫比乌斯反演)

    [题目链接] https://www.luogu.org/problemnew/show/P3172 [题解] https://www.luogu.org/blog/user29936/solutio ...

  4. 【洛谷p1036】选数

    (一定要声明我太蒟了,这个题扣了一上午……) 算法标签: …… dfs真的不是我所擅长的qwq,这道题的思路其实很简单,就是先dfs搜索所有可能的和,然后判断是不是质数.说着好说,然鹅并不好写: 第一 ...

  5. 洛谷 1447 [NOI2010]能量采集——容斥/推式子

    题目:https://www.luogu.org/problemnew/show/P1447 1.容斥原理 求 f [ i ] 表示 gcd==i 的对数,先 f [ i ] = (n/i) * (m ...

  6. luogu P3172 [CQOI2015]选数

    传送门 颓了一小时柿子orz 首先题目要求的是\[\sum_{x_1=l}^{r}\sum_{x_2=l}^{r}...\sum_{x_n=l}^{r}[gcd(x_1,x_2...x_n)=k]\] ...

  7. 洛谷 [CQOI2015]选数 解题报告

    [CQOI2015]选数 题目描述 我们知道,从区间\([L,H]\)(\(L\)和\(H\)为整数)中选取\(N\)个整数,总共有\((H-L+1)^N\)种方案. 小\(z\)很好奇这样选出的数的 ...

  8. bzoj3930[CQOI2015]选数 容斥原理

    3930: [CQOI2015]选数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1383  Solved: 669[Submit][Status] ...

  9. BZOJ 3930: [CQOI2015]选数 递推

    3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...

随机推荐

  1. Java for LeetCode 091 Decode Ways

    A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...

  2. HDU - 1160 FatMouse's Speed 【DP】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意 给出一系列的 wi si 要找出一个最长的子序列 满足 wi 是按照升序排列的 si 是按 ...

  3. P3968 [TJOI2014]电源插排

    P3968 [TJOI2014]电源插排 线段树维护最长空区间及左端点位置,这个和$nlongn$的动态最大子序和差不多,就不多解释了 $n$较大哈希优化空间 My complete code: #i ...

  4. linkedhashSet和hashSet和TreeSet的区别(转)

    Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false.Set判断两个对象相同不是使用==运算符,而是根据equals方法.也就是说,只要两个对象用eq ...

  5. Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包

    0. Collections.synchronizedXxx() Java 中常用的集合框架中的实现类:HashSet/TreeSet.ArrayList/LinkedList.HashMap/Tre ...

  6. Java之类加载器(Class Loader)

    JVM默认有三个类加载器: Bootstrap Loader Bootstrap Loader通常有C编写,贴近底层操作系统.是JVM启动后,第一个创建的类加载器. Extended Loader E ...

  7. Chapter2 二分与三分

    T1 给一个N个数的序列,分成M段,每段最大值最小 sol:二分最大值,贪心Check T2 平面上n个点,每个点每s会向周围扩散一个单位长度,两个点联通当且仅当扩散有交点,问什么时候这n个点联通 s ...

  8. 博客和GitHup链接地址

    硕哥博客链接:http://www.cnblogs.com/999-/p/6073601.html 硕哥GitHup链接:https://github.com/xiaodoufu

  9. BZOJ_3159_决战

    题目链接 分析: 我使用树剖+splay维护这个东西. 对每条重链维护一棵splay,链加和查询正常做,剩下的链反转如下. 由于一定是深度递增的一条链,我们树剖将它分成从左到右log个区间,提取出对应 ...

  10. BZOJ_3671_[Noi2014]随机数生成器_set+贪心

    BZOJ_3671_[Noi2014]随机数生成器_set Description   Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第 ...