博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2301 莫比乌斯反演
阅读量:4930 次
发布时间:2019-06-11

本文共 1156 字,大约阅读时间需要 3 分钟。

#include
#include
#include
#include
using namespace std;#define N 60000#define M 50000int mindiv[N];int zhi[N];int zhin;int u[N];void shai(int x){ for(int i=1;i<=x;i++)mindiv[i]=i; u[1]=1; for(int i=2;i<=x;i++){ if(mindiv[i]==i)zhi[++zhin]=i,u[i]=-1; for(int j=1;j<=zhin&&zhi[j]<=mindiv[i]&&zhi[j]*i<=x;j++){ mindiv[i*zhi[j]]=zhi[j]; if(zhi[j]==mindiv[i])u[i*zhi[j]]=0; else u[i*zhi[j]]=-u[i]; } } }int s[N];int gcds(int a,int b,int k){ if(a==0||b==0)return 0; int l,r=0; a/=k; b/=k; int ans=0; int lim=min(a,b); for(;;){ l=r+1; if(l>lim)break; r=min((a/(a/l)),b/(b/l)); ans+=(a/l)*(b/l)*(s[r]-s[l-1]); } return ans;}int main(){ shai(M); for(int i=1;i<=M;i++)s[i]=s[i-1]+u[i]; int n; scanf("%d",&n); for(int i=1;i<=n;i++){ int a,b,c,d,k; scanf("%d%d%d%d%d",&a,&b,&c,&d,&k); printf("%d\n",gcds(b,d,k)-gcds(b,c-1,k)-gcds(a-1,d,k)+gcds(a-1,c-1,k)); } }

 

转载于:https://www.cnblogs.com/wangyucheng/p/3843634.html

你可能感兴趣的文章
数据分析之pandas( 三 )
查看>>
Nosql(以redis、memchache以及mogoDB为代表)和关系型数据库的区别
查看>>
javascript 书写规范代码
查看>>
if __name__ == "__main__"的疑惑
查看>>
PHP带参数传值调用python脚本
查看>>
iOS Button在ios6的系统上无法实现点击,在更高版本的系统上可以
查看>>
白帽子黑客是怎样的一群人?
查看>>
Permutation&Combination递归实现
查看>>
公司内网接口ip城市查询分析
查看>>
更换pip源到国内镜像
查看>>
double工具类
查看>>
微信小游戏。超越好友。不卡方法。
查看>>
第三章随手笔记
查看>>
Oracle锁的机制
查看>>
封装集合类型的数据
查看>>
python--matplotlib显示中文问题(四种方法)
查看>>
公共的分页类,包含jsp页面
查看>>
python 正则表达式口诀
查看>>
Hibernate(一)
查看>>
Mac自带服务器的应用
查看>>