题目链接

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]选数相关推荐

  1. bzoj 3930: [CQOI2015]选数

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

  2. BZOJ3930: [CQOI2015]选数

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

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

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

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

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

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

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

  6. [BZOJ 2734] 集合选数

    Link: BZOJ 2734 传送门 Solution: 真是奥妙重重的建模啊..... 我们发现$x,2*x,3*x$这些数太分散了,难以处理 于是我们构建这样的表格: x  3x  9x  27 ...

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

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

  8. [bzoj3930] [CQOI2015]选数

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

  9. 洛谷P3172 [CQOI2015]选数

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

最新文章

  1. sql建表,建索引注意事项
  2. 一个最简单的登录页面测试case
  3. mui 使用LocalStore记住用户密码方法
  4. 1052 Linked List Sorting (25 分)【难度: 一般 / 知识点: 链表】
  5. Windows8.1提升权限安装程序
  6. 无限循环小数转化为分数形式
  7. java numberformat异常_Java NumberFormat格式化float类型的bug
  8. snprintf()返回值的陷阱
  9. c语言排队系统,【分享】C语言 银行取票排队系统
  10. 我们早上一般是七点半上班
  11. MODIS数据批量下载工具
  12. pycharm运行pytest参数化运行teardown错误
  13. 【小样本基础】小样本学习方法总结:模型微调、数据增强、迁移学习
  14. 微信小程序引入iconfont阿里字体
  15. 2020版无人机组装与维修(芯片级)
  16. 绝对爆笑,虽然我知道可能和别的人雷同,但欢声笑语不雷同不是么?
  17. 助力“双11”智能化物流,顺丰、中通、韵达分享架构改造经验
  18. 标签上 title 与 alt 属性的区别是什么?
  19. 四阶龙格库塔法c语言程序,四阶龙格_库塔算法的C语言实现_毋玉芝
  20. 网络与系统安全笔记------网络安全协议

热门文章

  1. java的classpath配置文件_Java Classpath及.properties配置文件
  2. grep 与条件_小白贴:使用 grep 命令搜索多个字符串
  3. 悬镜 linux防黑加固平台,悬镜答疑丨悬镜服务器防护CC效果如何?
  4. 保存数组类型数据_JS基本数据类型和引用数据类型的区别及深浅拷贝
  5. 学业水平考试网登录_海南高中学业水平考试成绩查询免费登录入口:http://ea.hainan.gov.cn/(已开通)...
  6. openstack的云主机相关命令
  7. vba 您正和其他用户尝试修改同一条数据_专辑二 | Moodle学习之Moodle添加用户
  8. w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)
  9. thinkjs-定时任务
  10. react系列项目地址