3930: [CQOI2015]选数

Time Limit: 10 Sec   Memory Limit: 512 MB
Submit: 742   Solved: 376
[ Submit][ Status][ Discuss]

Description

我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。然而他很快发现工作量太大了,于是向你寻求帮助。你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好为K的选取方案有多少个。由于方案数较大,你只需要输出其除以1000000007的余数即可。

Input

输入一行,包含4个空格分开的正整数,依次为N,K,L和H。

Output

输出一个整数,为所求方案数。

Sample Input

2 2 2 4

Sample Output

3

HINT

样例解释

所有可能的选择方案:(2, 2), (2, 3), (2, 4), (3, 2), (3, 3), (3, 4), (4, 2), (4, 3), (4, 4)
其中最大公约数等于2的只有3组:(2, 2), (2, 4), (4, 2)
对于100%的数据,1≤N,K≤10^9,1≤L≤H≤10^9,H-L≤10^5

递推,我好蠢...

注意题目中H-L≤10^5这个条件,如果N个数不全相同,那么他们的最大公约数小于等于N个数的极差。

因此我们可以先计算出N个数不全相同的方案数,再特判一下全相同的情况,就可以得到答案。

计算N各数不全相同,且最大公约数等于K的方案数,我们可以将L除以K上取整,H除以K下取整,问题转化为新的区间内最大公约数等于1的方案数。

设f[i]表示最大公约数为i的方案数,f[i]=t^n-t-∑(i|j)f[j],其中t=H-L+1。然后枚举i,利用容斥原理暴力计算。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define maxn 100005
#define mod 1000000007
using namespace std;
int n,k,l,r,len;
ll f[maxn];
inline int read()
{int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline ll getpow(ll x,ll y)
{ll ret=1;for(;y;y>>=1,x=x*x%mod) if (y&1) ret=ret*x%mod;return ret;
}
int main()
{freopen("number.in","r",stdin);freopen("number.out","w",stdout);n=read();k=read();l=read();r=read();l=(l-1)/k+1;r=r/k;len=r-l+1;D(i,len,1){ll tmp=r/i-(l-1)/i;if (!tmp) continue;f[i]=((getpow(tmp,n)-tmp)%mod+mod)%mod;F(j,2,len/i) f[i]=((f[i]-f[j*i])%mod+mod)%mod;}if (l<=1&&r>=1) f[1]=(f[1]+1)%mod;printf("%lld\n",f[1]);
}

bzoj3930【CQOI2015】选数相关推荐

  1. BZOJ3930: [CQOI2015]选数

    BZOJ3930: [CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案. 小z很好奇这样选出的数的最大公约数的规 ...

  2. [BZOJ3930][CQOI2015]选数(数论+容斥)

    首先,进行如下处理: 1.如果 L L是KK的倍数,那么把 L L变为LK\frac{L}{K},否则变为 ⌊LK⌋+1 \lfloor\frac{L}{K}\rfloor+1. 2.把 H H变成⌊ ...

  3. [bzoj3930] [CQOI2015]选数

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

  4. 【BZOJ3930】[CQOI2015]选数 莫比乌斯反演

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

  5. [CQOI2015]选数(杜教筛)

    [CQOI2015]选数 推式子 根据题意可写出式子: ∑a1=LH∑a2=LH⋯∑an=LH[gcd(a1,a2-an)=k]∑a1=⌈Lk⌉⌊Hk⌋∑a2=⌈Lk⌉⌊Hk⌋⋯∑an=⌈Lk⌉⌊Hk ...

  6. 【BZOJ3930】选数(莫比乌斯反演倍数形式,杜教筛)

    [BZOJ3930]选数 https://www.cnblogs.com/cjyyb/p/8303813.html

  7. 【反演复习计划】【COGS2433】【bzoj3930,CQOI2015选数】爱蜜莉雅的冰魔法

    同bzoj3930. (日常盗题图) #include<bits/stdc++.h> #define N 1000010 #define yql 1000000007 #define ll ...

  8. bzoj 3930: [CQOI2015]选数

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

  9. [CQOI2015]选数(数论分块+杜教筛)

    problem 洛谷链接 solution 将 L,HL,HL,H 的范围放缩 1K\frac 1 KK1​,都除掉 KKK,特殊的 LLL 边界注意一下. H←H/K,L←(L−1)/K+1H\le ...

  10. 洛谷P3172 [CQOI2015]选数

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

最新文章

  1. 不同数据类型的处理函数(一)
  2. java怎么删除List中的指定元素
  3. vbyone接口引脚定义_FMC接口介绍
  4. Cauchy-Schwarz不等式
  5. 【Linux】快速入门法宝~你值得拥有
  6. 匿名留言板表白墙 小程序校园树洞带后台
  7. 【Azure Data Platform】ETL工具(8)——ADF 数据集和链接服务
  8. python基础-异常处理try-except
  9. 2022Android笔试真题,20道高频面试题(含答案)
  10. 《动手学深度学习》报错 解决方案RuntimeError: DataLoader worker (pid(s) ...) exited unexpectedly
  11. u盘启动 联想一体机_联想一体机如何进入bios设置u盘启动_联想一体机设置U盘启动步骤...
  12. 北京市新型冠状病毒疫情区域图
  13. matlab画出拟合的曲线,matlab画出拟合曲线
  14. PHP面向对象-多态
  15. 手动删除oem 13c EM REPOSITORY 数据库
  16. 20221015 动量矩定理
  17. uniapp页面不能触发onReachBottom事件
  18. Composer的实用部分
  19. vr计算机组装,VR轻松实现在家学习装配技术!
  20. RS485串口|433无线|LORA模块|自组网模块|RS485信号无线通讯|无线485传输模块

热门文章

  1. C语言-递归解决分鱼问题。
  2. 【知识整理】安卓(Android)应用上传360应用市场步骤详解
  3. Attempting to capture an EagerTensor without building a function
  4. 【20211123】【Python】修改list/array中的某些数值时,报错TypeError: can only assign an iterable,原因分析及正确的操作方式
  5. 国产BI软件报表分享:财务数据分析三张表
  6. Echarts柱状图设置渐变色
  7. 转:人到中年须具备的心情修养
  8. Python【小游戏合集】之自行开发一个猜数字游戏~
  9. zigbee CC2530 系列教程 7 串口数据收发实验
  10. 蓝宝石b75主板支持服务器内存,入门主板新标杆 蓝宝石冰晶B75全解析