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 ...
随机推荐
- go tcp通信
----tcp 客户端 package main import ( "net" "fmt" ) func main() { conn,err := net.Di ...
- vue v-show的使用
v-show的功能和v-if基本一样,但是v-if有衍生的v-else-if和v-else,v-show没有 v-show的性能比v-if要好,能用v-show就不要用v-if v-if是删除dom节 ...
- 从应用到内核,分析top命令显示的进程名包含中括号"[]"的含义
背景 在执行top/ps命令的时候,在COMMAND一列,我们会发现,有些进程名被[]括起来了,例如 PID PPID USER STAT VSZ %VSZ %CPU COMMAND 1542 928 ...
- 『卧槽』意外发现了 Hashtable 的 foreach 用法 BUG
这段时间,公司项目中 遇到一个问题,最后查出: 是 Hashtable 的用法导致的. private static void AutoCleanCache() { try { lock (m_Has ...
- python-5-str常用操作
前言 本节将讲解的是字符串 str 常用的操作方法,与 for 循环. 一.srt 常用操作 1.首个字母大写: # 1.首个字母大写 s = 'xiao long' s1 = s.capitaliz ...
- mysql派生查询必须有别名问题记录
最近在做mysql sql兼容,原来是oracle的sql都要保证在mysql数据库运行 业务场景:原来是一个带有子查询的sql,在oracle是可以正常运行的,迁到mysql就发现报错了,报错信息如 ...
- jQuery源码分析(九) 异步队列模块 Deferred 详解
deferred对象就是jQuery的回调函数解决方案,它解决了如何处理耗时操作的问题,比如一些Ajax操作,动画操作等.(P.s:紧跟上一节:https://www.cnblogs.com/grea ...
- Django学习笔记(17)——BBS+Blog项目开发(1)验证码功能的实现
本文主要学习验证码功能的实现,为了项目BBS+Blog项目打下基础. 为了防止机器人频繁登陆网站或者破坏分子恶意登陆,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是“Com ...
- 【UOJ#308】【UNR#2】UOJ拯救计划
[UOJ#308][UNR#2]UOJ拯救计划 题面 UOJ 题解 如果模数很奇怪,我们可以插值一下,设\(f[i]\)表示用了\(i\)种颜色的方案数. 然而模\(6\)这个东西很有意思,\(6=2 ...
- ASP.NET web.config 配置里部分参数详细说明
Session配置 <!-- <identity impersonate = "false" [true|false] userName = "" ...