bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)
来源:互联网 发布:python简明教程pdf版 编辑:程序博客网 时间:2024/06/06 00:59
求gcd(i,j)为质数的个数。即
首先我们可以像bzoj2301一样把后一部分化简,得到(假定n< m)
设k=pd,则得到
我们预处理出前半部分的前缀和(利用线性素数筛),后面的就是用floor函数分块的套路算啦!素数是O(n/logn)级别的,更新时是均摊O(logn)的,因此预处理的复杂度是O(n)的。总的复杂度是
#include <bits/stdc++.h>using namespace std;#define ll long long#define N 10000010int T,n,m,mu[N],prime[N],tot=0;ll f[N];bool notprime[N];inline int read(){ int x=0;char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x;}void Mobius(){ memset(notprime,0,sizeof(notprime)); mu[1]=1;notprime[1]=1; for(int i=2;i<=N;++i){ if(!notprime[i]){ prime[++tot]=i;mu[i]=-1; } for(int j=1;prime[j]*i<=N;++j){ notprime[prime[j]*i]=1; if(i%prime[j]==0){ mu[prime[j]*i]=0;break; } mu[prime[j]*i]=-mu[i]; } } for(int j=1;j<=tot;++j) for(int i=1;prime[j]*i<=N;++i) f[prime[j]*i]+=mu[i]; for(int i=2;i<=N;++i) f[i]+=f[i-1];}ll ANS(int a,int b){ ll re=0;if(a>b) swap(a,b); int last; for(int i=1;i<=a;i=last+1){ last=min(a/(a/i),b/(b/i)); re+=(f[last]-f[i-1])*(a/i)*(b/i); } return re;}int main(){// freopen("a.in","r",stdin); Mobius(); T=read(); while(T--){ n=read();m=read(); printf("%lld\n",ANS(n,m)); } return 0;}
阅读全文
0 0
- bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)
- 【bzoj2820】YY的GCD 线性筛法+莫比乌斯反演+数论分块
- [BZOJ2820]YY的GCD(莫比乌斯反演+线性筛)
- bzoj2820: YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】[BZOJ2820]YY的GCD
- 【bzoj2820】YY的GCD 莫比乌斯反演
- 【bzoj2820】【YY的gcd】【莫比乌斯反演】
- Bzoj2820:YY的GCD:莫比乌斯反演
- [BZOJ2820]YY的GCD(莫比乌斯反演)
- [bzoj2820]YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】BZOJ2820 YY的GCD
- bzoj2820 YY的GCD【莫比乌斯反演】
- BZOJ2820 YY的GCD 莫比乌斯反演
- BZOJ2820 YY的GCD 【莫比乌斯反演】
- 莫比乌斯反演练习bzoj2440;bzoj2301;bzoj2820 YY的GCD
- [莫比乌斯反演+分块求和] BZOJ2820: YY的GCD
- BZOJ2820: YY的GCD(Mobius反演)
- 【莫比乌斯函数+除法分块】BZOJ2820[YY的GCD]题解
- hihocoder#1069 : 最近公共祖先·三(DFS序列+线段树)
- Django入门总结
- 机器学习——特征工程之数据预处理
- wsgi接口开发
- C# FileSystemWatcher 在监控文件夹和文件时的用法
- bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)
- java的动态代理机制详解
- 数据结构|创建学生成绩的单链表(实验2.2)
- JavaScript基础学习(一)
- BZOJ2648&&2716 不讲道理的KD-tree
- 【秋招总结】360、滴滴、华为、阿里、携程、58、京东、美团等后台开发面经
- XTU 1262 Fish(优先队列+贪心)
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- 插入排序(Insert-Sort)