luoguP3172 [CQOI2015]选数
题意
所求即为:
\(\sum\limits_{i_1=L}^{R}\sum\limits_{i_2=L}^{R}...\sum\limits_{i_k=L}^{R}[\gcd(i_1,i_2,...,i_k)=k]\)
套路地进行莫比乌斯反演:
\(\sum\limits_{i_1=\frac{L-1}{k}+1}^{\frac{R}{k}}\sum\limits_{i_2=\frac{L-1}{k}+1}^{\frac{R}{k}}...\sum\limits_{i_k=\frac{L-1}{k}+1}^{\frac{R}{k}}[\gcd(i_1,i_2,...,i_k)=1]\)
\(\sum\limits_{i_1=\frac{L-1}{k}+1}^{\frac{R}{k}}\sum\limits_{i_2=\frac{L-1}{k}+1}^{\frac{R}{k}}...\sum\limits_{i_k=\frac{L-1}{k}+1}^{\frac{R}{k}}\sum\limits_{x|\gcd(i_1,i_2,...,i_k)}\mu(x)\)
\(\sum\limits_{x=1}^{\frac{R}{k}}\mu(x)\sum\limits_{i_1=\frac{L-1}{k}+1}^{\frac{R}{k}}\sum\limits_{i_2=\frac{L-1}{k}+1}^{\frac{R}{k}}...\sum\limits_{i_k=\frac{L-1}{k}+1}^{\frac{R}{k}}[x|\gcd(i_1,i_2,...,i_k)]\)
\(\sum\limits_{x=1}^{\frac{R}{k}}\mu(x)\sum\limits_{i_1=\frac{L-1}{k*x}+1}^{\frac{R}{k*x}}\sum\limits_{i_2=\frac{L-1}{k*x}+1}^{\frac{R}{k*x}}...\sum\limits_{i_k=\frac{L-1}{k*x}+1}^{\frac{R}{k*x}}1\)
\(\sum\limits_{x=1}^{\frac{R}{k}}\mu(x)(\frac{R}{k*x}-\frac{L-1}{k*x})^n\)
杜教筛求\(\sum\limits_{x=1}^{\frac{R}{k}}\mu(x)\)就可以除法分块了
code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const int inf=1e9;
const ll mod=1000000007;
int n,K,L,R;
int mu[maxn],sum[maxn];
ll ans;
bool vis[maxn];
vector<int>prime;
unordered_map<int,int>mp;
inline ll power(ll x,ll k,ll mod)
{
ll res=1;
while(k)
{
if(k&1)res=res*x%mod;
x=x*x%mod;k>>=1;
}
return res;
}
inline void pre_work(int n)
{
vis[1]=1;mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])prime.push_back(i),mu[i]=-1;
for(unsigned int j=0;j<prime.size()&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)break;
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<=n;i++)sum[i]=sum[i-1]+mu[i];
}
inline int getsum(int x)
{
if(x<=100000)return sum[x];
if(mp.count(x))return mp[x];
ll res=1;
for(int l=2,r;l<=x;l=r+1)
{
r=x/(x/l);
res=(res-(r-l+1)*getsum(x/l)%mod)%mod;
}
return mp[x]=(res%mod+mod)%mod;
}
int main()
{
pre_work(100000);
scanf("%d%d%d%d",&n,&K,&L,&R);
L=(L-1)/K,R=R/K;
for(int l=1,r;l<=R;l=r+1)
{
r=min(L/l?L/(L/l):inf,R/(R/l));
ans=((ans+1ll*(getsum(r)-getsum(l-1))*power(R/l-L/l,n,mod)%mod)%mod+mod)%mod;
}
printf("%lld",ans);
return 0;
}
luoguP3172 [CQOI2015]选数的更多相关文章
- [luoguP3172] [CQOI2015]选数(递推+容斥原理)
传送门 不会莫比乌斯反演,不会递推. 但是我会看题解. 先将区间[L,H]变成(L-1,H],这样方便处理 然后求这个区间内gcd为k的方案数 就是求区间((L-1)/k,H/k]中gcd为1的方案数 ...
- BZOJ 3930: [CQOI2015]选数 递推
3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...
- bzoj3930[CQOI2015]选数 容斥原理
3930: [CQOI2015]选数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1383 Solved: 669[Submit][Status] ...
- 洛谷 [CQOI2015]选数 解题报告
[CQOI2015]选数 题目描述 我们知道,从区间\([L,H]\)(\(L\)和\(H\)为整数)中选取\(N\)个整数,总共有\((H-L+1)^N\)种方案. 小\(z\)很好奇这样选出的数的 ...
- 【BZOJ3930】[CQOI2015]选数 莫比乌斯反演
[BZOJ3930][CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律 ...
- [CQOI2015]选数(莫比乌斯反演,杜教筛)
[CQOI2015]选数(luogu) Description 题目描述 我们知道,从区间 [L,H](L 和 H 为整数)中选取 N 个整数,总共有 (H-L+1)^N 种方案. 小 z 很好奇这样 ...
- BZOJ3930: [CQOI2015]选数
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3930 容斥原理. 令l=(L-1)/k,r=R/k,这样找k的倍数就相当于找1的倍数. 设F[ ...
- 【刷题】BZOJ 3930 [CQOI2015]选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
- 【BZOJ】3930: [CQOI2015]选数
题意 从区间\([L, R]\)选\(N\)个数(可以重复),问这\(N\)个数的最大公约数是\(K\)的方案数.(\(1 \le N, K \le 10^9, 1 \le L \le R \le 1 ...
随机推荐
- 其它 用VB6创建ActiveX.dll
1.打开VB6 2.选择 ActiveX DLL,点击打开 3.在窗口输入测试代码 Public Function addstr(str As String) As String addstr = & ...
- ubuntu16.04下安装nvidia驱动心得
首先机器重启后莫名出现循环登录错误,然后按照网上的方法卸载掉nvidia驱动后,可以正常登录. 但还是要再装nvidia驱动.网上说的各种方法都试过了,geforce.cn官网上推荐的各种版本的run ...
- web.xml引入 xml (tomcat 7.0.52) 以上版本报错
原文地址:https://blog.csdn.net/sdmxdzb/article/details/47728017?locationNum=11 今天在搞工作流,tomcat7.0.57 总是报错 ...
- spring 注解AOP
aspectAnnotation的切面信息,加到了AnnotationAwareAspectJAutoProxyCreator的advisorsCache属性里面去了. 解析annotationSe ...
- 按照官网的升级完socket.io报错Manager is being released。
查阅了很多资料和英文官网自己也提出了一些问题,估计官网以前有该类的问题历史,懒得回复. 终于功夫不负有心人原因竟然是:你的manager被释放了. you need to make sure the ...
- python中pkl用法
原文连接:https://www.jianshu.com/p/2ecadebe6d13 python中pkl用法 经常遇到在Python程序运行得到了一些字符串.列表.字典等数据,想要长久的保存下来, ...
- 第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
云原生应用,是指符合“云原生”理念的应用开发与交付模式,这是当前在云时代最受欢迎的应用开发最佳实践. 在现今的云原生生态当中,已经有很多成熟的开源软件被制作成了 Helm Charts,使得用户可以非 ...
- SQL 除去数字中多于的0
/* 除掉多于的0 */ CREATE FUNCTION [dbo].[fn_ClearZero] ( ) ) ) AS BEGIN ); IF (@inValue = '') SET @return ...
- LiveBOS Webservice传参类型为list数组
昨天有使用soap传输数据到Webservice,其中字符串类型的都已经传输成功,但是有几个参数传输失败,java服务器端收到的空值. 因为我是php的,然后接收端是java制作的,其中有几个参数是l ...
- Linux用户和权限——用户和用户组管理
Linux用户和权限——用户和用户组管理 摘要:本文主要介绍了Linux系统中的用户和用户组管理. 用户和用户组 含义 在使用Linux系统时,虽然输入的是自己的用户名和密码,但其实Linux并不认识 ...