bzoj3561 DZY Loves Math VI 莫比乌斯函数
来源:互联网 发布:新浪体育英超数据库 编辑:程序博客网 时间:2024/05/18 00:49
对原式运用莫比乌斯函数进行转化得到原式=
然后直接暴力就好了。时间复杂度O(NlogN)。
AC代码如下:
#include<iostream>#include<cstdio>#include<cstring>#define ll long long#define p 1000000007#define N 500005using namespace std;int m,n,cnt,c[N],mu[N],a[N],sum[N]; bool vis[N];int ksm(int x,int y){int t=1; for (; y; y>>=1,x=(ll)x*x%p) if (y&1) t=(ll)t*x%p; return t;}void pfs(){int i,j; mu[1]=1;for (i=2; i<=n; i++){if (!vis[i]){ mu[i]=-1; c[++cnt]=i; }for (j=1; j<=cnt && i*c[j]<=n; j++){vis[i*c[j]]=1;if (i%c[j]) mu[i*c[j]]=-mu[i]; else{mu[i*c[j]]=0; break;}}}}int main(){scanf("%d%d",&m,&n); int i,j,ans=0;if (m>n) swap(m,n); pfs();for (i=1; i<=n; i++) a[i]=1;for (i=1; i<=m; i++){int x=ksm(i,i),y=0;for (j=1; j*i<=n; j++){a[j]=(ll)a[j]*j%p; sum[j]=(sum[j-1]+a[j])%p;}for (j=1; j*i<=m; j++) if (mu[j])y=((ll)a[j]*a[j]%p*sum[m/i/j]%p*sum[n/i/j]%p*mu[j]+y+p)%p;ans=(ans+(ll)x*y%p)%p;}printf("%d\n",ans);return 0;}
by lych
2016.2.23
0 0
- bzoj3561 DZY Loves Math VI 莫比乌斯函数
- BZOJ3561: DZY Loves Math VI
- 【bzoj3561】DZY Loves Math VI
- [bzoj3561] DZY Loves Math VI
- BZOJ3561: DZY Loves Math VI
- bzoj3561 DZY Loves Math VI
- bzoj3739 DZY loves math VIII 莫比乌斯函数
- BZOJ_P3561 DZY Loves Math VI(数论+莫比乌斯反演)
- BZOJ 3561 DZY Loves Math VI(莫比乌斯反演)
- BZOJ 3309 DZY Loves Math 莫比乌斯反演
- 3309: DZY Loves Math 莫比乌斯反演
- [BZOJ3309] DZY Loves Math - 莫比乌斯反演
- bzoj 3309: DZY Loves Math 莫比乌斯反演
- BZOJ 3309 DZY Loves Math (莫比乌斯反演的应用 好题)
- [数论][莫比乌斯反演][杜教筛] BZOJ 3512: DZY Loves Math IV
- 2017.10.9 DZY Loves Math VI 失败总结
- 【BZOJ3309】DZY Loves Math
- BZOJ3309: DZY Loves Math
- linux实战(九)----批量监控服务器是否存活----综合运用
- Character
- Mac OX上安装MongoDb
- 利用runtime 实现自定义Model归档
- android限制edittext最大行数的方法
- bzoj3561 DZY Loves Math VI 莫比乌斯函数
- POJ 2763 Housewife Wind
- 何时使用SpringAOP与aspectJ
- sql newid()随机函数
- intellij idea中文变口口
- iOS网络编程实践--NSStream实现TCP Socket iPhone客户端
- iOS9适配
- 不得不说的Volte的真相。
- vi/vim基本使用方法