ZOJ 3868 GCD Expectation(莫比乌斯反演)
来源:互联网 发布:地理所用数据 高分 编辑:程序博客网 时间:2024/06/05 11:16
题意就是求序列的所有
每一次
预处理完了以后
要求的答案:
总的复杂度:
代码部分:
#include <bits/stdc++.h>#define LL long long#define FOR(i,x,y) for(int i = x;i < y;++ i)#define IFOR(i,x,y) for(int i = x;i > y;-- i)using namespace std;const LL Mod = 998244353;const int maxn = 1000010;LL quickpow(LL a,int n,LL m){ LL ans=1; while(n){ if(n&1) ans = (ans*a)%m; a = (a*a)%m; n>>=1; } return ans;}LL c[maxn];//预处理出2^n次方//cnt[x]表示x|a[i]的个数int prime[maxn],mu[maxn],cnt[maxn];bool check[maxn];void Mobius(){ memset(check,false,sizeof(check)); prime[0] = 0; mu[1] = 1; FOR(i,2,maxn){ if(!check[i]){ prime[++prime[0]] = i; mu[i] = -1; } FOR(j,1,prime[0]+1){ if(i*prime[j] >= maxn) break; check[i*prime[j]] = true; if(i % prime[j]){ mu[i*prime[j]] = -mu[i]; } else{ mu[i*prime[j]] = 0; break; } } } c[0] = 1; FOR(i,1,maxn){ c[i] = c[i-1]<<(1LL); c[i] %= Mod; }}//F[d]表示d|gcd(b1,b2,...,bp)的个数//f[d]表示d=gcd(b1,b2,...,bp)的个数LL F[maxn],f[maxn];int n,k,mx;void init(){ scanf("%d%d",&n,&k); memset(cnt,0,sizeof(cnt)); memset(F,0,sizeof(F)); memset(f,0,sizeof(f)); int num; mx = -1; FOR(i,0,n){ scanf("%d",&num); mx = max(mx,num); cnt[num] ++; } FOR(i,1,mx+1){ for(int j = i+i;j <= mx;j += i){ cnt[i] += cnt[j]; } F[i] = (c[cnt[i]]+Mod-1)%Mod;; } FOR(i,1,mx+1){ for(int j = i;j <= mx;j += i){ f[i] += mu[j/i]*F[j]; f[i] %= Mod; } }}void work(){ LL ans = 0; FOR(i,1,mx+1){ if(!f[i]) continue; LL res = (f[i] * quickpow(i,k,Mod))%Mod; ans += res; ans %= Mod; } printf("%lld\n",ans);}int main(){ //freopen("test.in","r",stdin); Mobius(); int T; scanf("%d",&T); while(T--){ init(); work(); } return 0;}
0 0
- ZOJ 3868 GCD Expectation(莫比乌斯反演)
- ZOJ 3868 GCD Expectation 莫比乌斯反演
- ZOJ 3868 GCD Expectation 莫比乌斯反演
- ZOJ 3868 GCD Expectation (容斥+莫比乌斯反演)
- ZOJ 3868 GCD Expectation
- ZOJ 3868 GCD Expectation
- HDU1695 GCD(莫比乌斯反演)
- GCD问题--莫比乌斯反演
- 【BZOJ2818】Gcd(莫比乌斯反演)
- hdu1695 gcd 莫比乌斯反演
- BZOJ2818 Gcd[莫比乌斯反演]
- [hdu1695][莫比乌斯反演]Gcd
- 【莫比乌斯反演】BZOJ2818 Gcd
- BZOJ2818 GCD 【莫比乌斯反演】
- zoj 3868 GCD Expectation(数学)
- ZOJ-3868-GCD Expectation(容斥)
- hdu1695 GCD(莫比乌斯反演)
- 杭电1695 GCD(莫比乌斯反演)
- 使用Docker打包Java/Spring Boot应用
- dubbo注解式服务(2)
- nginx学习(四) event模块
- 如何解决IE6/IE7/IE8浏览器不兼容HTML5新标签的问题
- 详解Collection
- ZOJ 3868 GCD Expectation(莫比乌斯反演)
- 扩展欧几里德算法(附证明)
- 10个基于DOCKER的顶尖开发工具
- ios CAEmitterCells学习文档
- IOS--UIAlertViewDelegate对对话框的事件处理方法
- Elasticsearch集群入门2
- 作为前端这些你不能不知道--浏览器基础篇
- 安卓 OnLongClickListener接口简介 以及案例
- OpenS-CAD, a simple 2D CAD application