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 ...
随机推荐
- [RN] React Native 调试技巧
React Native 调试技巧 一. 安卓模拟器调出Dev Setting 命令 adb shell input keyevent 二.图片不出来时,先运行此命令,再重新 run react-na ...
- 【2019.7.25 NOIP模拟赛 T3】树(tree)(dfs序列上开线段树)
没有换根操作 考虑如果没有换根操作,我们该怎么做. 我们可以求出原树的\(dfs\)序列,然后开线段树维护. 对于修改操作,我们可以倍增求\(LCA\),然后在线段树上修改子树内的值. 对于询问操作, ...
- 解决4K屏电脑显示问题
在科技飞速发展的年代,4K屏幕不断成为电视.电脑广告的亮点功能,它在显示效果上,确实效果不错,如下图.但是,在电脑上使用是否会影响眼睛的健康问题,还没有权威的论证. 毕竟4k高清屏幕还不是主流,很多软 ...
- 【半小时大话.net依赖注入】(下)详解AutoFac+实战Mvc、Api以及.NET Core的依赖注入
系列目录 上|理论基础+实战控制台程序实现AutoFac注入 下|详解AutoFac+实战Mvc.Api以及.NET Core的依赖注入 前言 本来计划是五篇文章的,每章发个半小时随便翻翻就能懂,但是 ...
- 短的 Guid 帮助类
直接贴代码了: /// <summary> /// 短的 Guid 帮助类 /// </summary> public class ShortGuidHelper { #reg ...
- JVM的监控工具之jstack
参考博客:https://www.jianshu.com/p/213710fb9e40 jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threa ...
- LOOP AT GROUP语法练习
DATA:P_MENGE TYPE EKKO-WKURS. DATA:P_MENGE1 TYPE EKKO-WKURS. SELECT * FROM EKKO INTO TABLE @DATA(LT_ ...
- 配置 ASP.NET Core 请求(Request)处理管道
配置 ASP.NET Core 请求(Request)处理管道 在本节中,我们将讨论使用中间件组件为 asp.net core 应用程序配置请求处理管道. 作为应用程序启动的一部分,我们要在Confi ...
- jmeter-分布式压测部署之负载机的设置
本文分三个部分: 1.windows下负载机的配置 2.Linux下负载机的配置 3.遇到的问题 *************************************************** ...
- 纯C语言实现链栈
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct StackNode{ E ...