【BZOJ 3561】 3561: DZY Loves Math VI (莫比乌斯,均摊log)
2017-03-23 21:41
441 查看
3561: DZY Loves Math VI
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 205 Solved: 141
Description
给定正整数n,m。求1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 #define Mod 1000000007 8 #define Maxn 500010 9 #define LL long long 10 11 int mymin(int x,int y) {return x<y?x:y;} 12 13 int mu[Maxn],pri[Maxn],pl; 14 bool vis[Maxn]; 15 16 LL qpow(LL x,int b) 17 { 18 LL ans=1; 19 while(b) 20 { 21 if(b&1) ans=(ans*x)%Mod; 22 x=(x*x)%Mod; 23 b>>=1; 24 } 25 return ans; 26 } 27 28 void init() 29 { 30 pl=0; 31 memset(vis,0,sizeof(vis)); 32 mu[1]=1; 33 for(int i=2;i<=Maxn-10;i++) 34 { 35 if(!vis[i]) pri[++pl]=i,mu[i]=-1; 36 for(int j=1;j<=pl;j++) 37 { 38 if(i*pri[j]>Maxn-10) break; 39 vis[i*pri[j]]=1; 40 if(i%pri[j]==0) mu[i*pri[j]]=0; 41 else mu[i*pri[j]]=mu[i]*mu[pri[j]]; 42 if(i%pri[j]==0) break; 43 } 44 } 45 } 46 47 int a[Maxn],sum[Maxn]; 48 void ffind(int n,int m) 49 { 50 int ans=0; 51 if(m>n) swap(m,n); 52 for(int i=1;i<=n;i++) a[i]=1; 53 for(int i=1;i<=m;i++) 54 { 55 int x=qpow(i,i),y=0; 56 for(int j=1;j*i<=n;j++) 57 { 58 a[j]=(LL)a[j]*j%Mod; 59 sum[j]=(sum[j-1]+a[j])%Mod; 60 } 61 for (int j=1;j*i<=m;j++) 62 y=((LL)a[j]*a[j]%Mod*sum[m/i/j]%Mod*sum[n/i/j]%Mod*mu[j]+y+Mod)%Mod; 63 ans=(ans+(LL)x*y%Mod)%Mod; 64 } 65 printf("%d\n",ans); 66 } 67 68 int main() 69 { 70 int n,m; 71 init(); 72 scanf("%d%d",&n,&m); 73 ffind(n,m); 74 return 0; 75 }
View Code
发现这个lych_cys大神的代码挺简短的,而且好像挺快的,LL都是算的时候才用。。
2017-03-23 21:56:35
相关文章推荐
- 【BZOJ 3561】 DZY Loves Math VI
- BZOJ 3561 DZY Loves Math VI
- 【BZOJ】3561: DZY Loves Math VI
- ●BZOJ 3561 DZY Loves Math VI
- BZOJ 3561 DZY Loves Math VI(莫比乌斯反演)
- BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]
- bzoj 3309 DZY Loves Math - 莫比乌斯反演 - 线性筛
- [数论][莫比乌斯反演][杜教筛] BZOJ 3512: DZY Loves Math IV
- 【莫比乌斯反演】BZOJ3309 DZY Loves Math
- BZOJ_P3561 DZY Loves Math VI(数论+莫比乌斯反演)
- [杜教筛] BZOJ3512. DZY Loves Math IV
- BZOJ3462 DZY Loves Math II(动态规划+组合数学)
- BZOJ3561 DZY Loves Math VI
- bzoj3560 DZY Loves Math V
- [BZOJ3512] DZY Loves Math IV -- 杜教筛,搜索
- BZOJ3560: DZY Loves Math V
- [bzoj3561] DZY Loves Math VI
- 【bzoj 3512】DZY loves math IV
- bzoj3309 DZY Loves Math
- bzoj 3512: DZY Loves Math IV