hdu 6053 TrickGCD 【容斥&筛法|莫比乌斯】
来源:互联网 发布:优化企业家发展环境 编辑:程序博客网 时间:2024/05/16 07:09
点击打开链接
题意:
给你一个a序列,让你自己构造b序列,b序列需要满足每个数 bi<=ai 且所有数的gcd>=2.
问你这样的序列有多少个。
题解:
1,筛法
枚举gcd的值,bi的取值最大ai. 所以每个位置有ai/gcd种情况, .然后把这种情况全部弄成一块,快速幂,logn,
最后容斥,把 k*j (j>1)情况减去。
这样n*(logn)^2差点超时。。
#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+5;const int mod=1e9+7;#define ll long longll v[maxn];ll sum[maxn];ll num[maxn];ll dp[maxn];ll kru(ll a,ll b){ ll ret=1; while(b){ if(b&1) ret=(ret*a)%mod; b/=2; a=(a*a)%mod; } return ret;}int main(){ int T,n; ll x,y; scanf("%d",&T); for(int ca=1;ca<=T;++ca){ memset(v,0,sizeof(v)); memset(sum,0,sizeof(sum)); scanf("%d",&n); for(int i=1;i<=n;++i){ scanf("%lld",&x); v[x]++; } for(int i=1;i<maxn;++i) sum[i]=sum[i-1]+v[i]; for(int i=2;i<maxn;++i){ num[i]=1; for(int j=0;j<maxn;j+=i){ int ed=min(maxn-1,j+i-1); if(j==0) y=sum[ed]; else y=sum[ed]-sum[j-1]; x=j/i; if(x==0&&y) num[i]=0; else if(y) num[i]=(num[i]*kru(x,y))%mod; } } ll ans=0; for(int i=maxn-1;i>=2;--i){ dp[i]=num[i]; for(int j=i+i;j<maxn;j+=i) dp[i]=(dp[i]-dp[j]+mod)%mod; ans=(ans+dp[i])%mod; } printf("Case #%d: %lld\n",ca,ans); } return 0;}
莫比乌斯,待补。
阅读全文
0 0
- hdu 6053 TrickGCD 【容斥&筛法|莫比乌斯】
- hdu 6053 TrickGCD 容斥 莫比乌斯
- hdu 6053 TrickGCD(容斥,分段,莫比乌斯函数)
- HDU 6053 TrickGCD 【容斥定理】【莫比乌斯函数】
- hdu 6053 TrickGCD 容斥原理(莫比乌斯工具)
- 【 hdu 6053】 TrickGCD 【数论 容斥 + 莫比乌斯函数 】
- HDU6053-TrickGCD 容斥原理+莫比乌斯反演
- hdu6053 TrickGCD 莫比乌斯函数 容斥原理
- TrickGCD(莫比乌斯函数,容斥)
- 2017多校训练赛第二场 HDU 6053 TrickGCD(容斥原理/莫比乌斯反演)
- 2017多校联合第二场 1009题 hdu 6053 TrickGCD (超详细!!!)莫比乌斯 容斥
- HDU 6053 TrickGCD 莫比乌斯反演||筛法
- 2017 Multi-University Training Contest 2 && HDOJ 6053 TrickGCD 【容斥+莫比乌斯函数】
- hdu 6053 TrickGCD(筛法+容斥)
- hdu 6053 TrickGCD [莫比乌斯函数]
- Hdu-6053 TrickGCD(莫比乌斯函数)
- HDU 6053 TrickGCD(莫比乌斯反演+分块)
- 【HDU 6053 TrickGCD】 + 莫比乌斯反演
- SVN服务端安装
- 获取另一个页面传递过来的参数值
- 服务器数据解析篇
- 英语单词D
- Java面试题:寻找coder;
- hdu 6053 TrickGCD 【容斥&筛法|莫比乌斯】
- 数据库DML语言--合并语句
- jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
- 第一个Spring小程序
- 对协程的理解
- SaltStack连接Linux&Windows机器
- AndroidStudio下使用Lambda表达式
- 解决Oracle出现以0开头的小数,开头的0消失的问题
- mysql忘记root密码的解决办法