BZOJ 3930 [CQOI2015]选数
题目链接
https://lydsy.com/JudgeOnline/problem.php?id=3930
题解
反演得到
∑i=1⌊h/k⌋μ(i)(⌊hki⌋−⌊l−1ki⌋)n \sum_{i=1}^{\lfloor h/k\rfloor} \mu(i) (\lfloor \frac{h}{ki}\rfloor-\lfloor\frac{l-1}{ki}\rfloor)^n i=1∑⌊h/k⌋μ(i)(⌊kih⌋−⌊kil−1⌋)n
整除分块直接算即可。
代码
#include <map>
#include <cstdio>
#include <algorithm>int read()
{int x=0,f=1;char ch=getchar();while((ch<'0')||(ch>'9')){if(ch=='-'){f=-f;}ch=getchar();}while((ch>='0')&&(ch<='9')){x=x*10+ch-'0';ch=getchar();}return x*f;
}const int maxn=1000000;
const int mod=1000000007;
const int inf=0x3f3f3f3f;int p[maxn+10],prime[maxn+10],cnt,mu[maxn+10];int getprime()
{p[1]=mu[1]=1;for(int i=2; i<=maxn; ++i){if(!p[i]){prime[++cnt]=i;mu[i]=mod-1;}for(int j=1; (j<=cnt)&&(i*prime[j]<=maxn); ++j){int x=i*prime[j];p[x]=1;if(i%prime[j]==0){mu[x]=0;break;}mu[x]=mod-mu[i];}}for(int i=1; i<=maxn; ++i){mu[i]+=mu[i-1];if(mu[i]>=mod){mu[i]-=mod;}}return 0;
}std::map<int,int> mp;int getsum(int n)
{if(n<=maxn){return mu[n];}if(mp.count(n)){return mp[n];}int ans=1;for(int l=2,r; l<=n; l=r+1){r=n/(n/l);ans-=1ll*(r-l+1)*getsum(n/l)%mod;if(ans<0){ans+=mod;}}return mp[n]=ans;
}int n,k,s,t;int quickpow(int a,int b)
{int res=1;while(b){if(b&1){res=1ll*res*a%mod;}a=1ll*a*a%mod;b>>=1;}return res;
}int main()
{getprime();n=read();k=read();s=read();t=read();int ans=0;for(int l=1,r; l<=t/k; l=r+1){r=inf;if(t/(l*k)!=0){r=std::min(r,t/(t/(l*k)));}if((s-1)/(l*k)!=0){r=std::min(r,(s-1)/((s-1)/(l*k)));}r/=k;ans=(ans+1ll*(getsum(r)-getsum(l-1)+mod)*quickpow((t/(k*l))-((s-1)/(k*l)),n))%mod;}printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/Canopus-wym/p/10376075.html
BZOJ 3930 [CQOI2015]选数相关推荐
- bzoj 3930: [CQOI2015]选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
- BZOJ3930: [CQOI2015]选数
BZOJ3930: [CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案. 小z很好奇这样选出的数的最大公约数的规 ...
- [CQOI2015]选数(杜教筛)
[CQOI2015]选数 推式子 根据题意可写出式子: ∑a1=LH∑a2=LH⋯∑an=LH[gcd(a1,a2-an)=k]∑a1=⌈Lk⌉⌊Hk⌋∑a2=⌈Lk⌉⌊Hk⌋⋯∑an=⌈Lk⌉⌊Hk ...
- 【BZOJ3930】[CQOI2015]选数 莫比乌斯反演
[BZOJ3930][CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律 ...
- [BZOJ3930][CQOI2015]选数(数论+容斥)
首先,进行如下处理: 1.如果 L L是KK的倍数,那么把 L L变为LK\frac{L}{K},否则变为 ⌊LK⌋+1 \lfloor\frac{L}{K}\rfloor+1. 2.把 H H变成⌊ ...
- [BZOJ 2734] 集合选数
Link: BZOJ 2734 传送门 Solution: 真是奥妙重重的建模啊..... 我们发现$x,2*x,3*x$这些数太分散了,难以处理 于是我们构建这样的表格: x 3x 9x 27 ...
- [CQOI2015]选数(数论分块+杜教筛)
problem 洛谷链接 solution 将 L,HL,HL,H 的范围放缩 1K\frac 1 KK1,都除掉 KKK,特殊的 LLL 边界注意一下. H←H/K,L←(L−1)/K+1H\le ...
- [bzoj3930] [CQOI2015]选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
- 洛谷P3172 [CQOI2015]选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
最新文章
- sql建表,建索引注意事项
- 一个最简单的登录页面测试case
- mui 使用LocalStore记住用户密码方法
- 1052 Linked List Sorting (25 分)【难度: 一般 / 知识点: 链表】
- Windows8.1提升权限安装程序
- 无限循环小数转化为分数形式
- java numberformat异常_Java NumberFormat格式化float类型的bug
- snprintf()返回值的陷阱
- c语言排队系统,【分享】C语言 银行取票排队系统
- 我们早上一般是七点半上班
- MODIS数据批量下载工具
- pycharm运行pytest参数化运行teardown错误
- 【小样本基础】小样本学习方法总结:模型微调、数据增强、迁移学习
- 微信小程序引入iconfont阿里字体
- 2020版无人机组装与维修(芯片级)
- 绝对爆笑,虽然我知道可能和别的人雷同,但欢声笑语不雷同不是么?
- 助力“双11”智能化物流,顺丰、中通、韵达分享架构改造经验
- 标签上 title 与 alt 属性的区别是什么?
- 四阶龙格库塔法c语言程序,四阶龙格_库塔算法的C语言实现_毋玉芝
- 网络与系统安全笔记------网络安全协议
热门文章
- java的classpath配置文件_Java Classpath及.properties配置文件
- grep 与条件_小白贴:使用 grep 命令搜索多个字符串
- 悬镜 linux防黑加固平台,悬镜答疑丨悬镜服务器防护CC效果如何?
- 保存数组类型数据_JS基本数据类型和引用数据类型的区别及深浅拷贝
- 学业水平考试网登录_海南高中学业水平考试成绩查询免费登录入口:http://ea.hainan.gov.cn/(已开通)...
- openstack的云主机相关命令
- vba 您正和其他用户尝试修改同一条数据_专辑二 | Moodle学习之Moodle添加用户
- w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)
- thinkjs-定时任务
- react系列项目地址