bzoj3309 DZY Loves Math
2017-06-03 20:47
316 查看
不妨设n≥m。
==∑i=1n∑j=1mf(gcd(i,j))∑d=1nf(d)∑x=1⌊nd⌋μ(x)⌊ndx⌋⌊mdx⌋∑D=1n∑d|Df(d)μ(Dd)⌊ndx⌋⌊mdx⌋
记g=f∗μ,只要我们线性筛出g,就可以O(n+Tn‾‾√)解决问题。
设g(n)=∑d|nf(d)μ(nd),n=∏ki=1pqii,d=∏ki=1pixi。显然xi=qi或者xi=qi−1,否则μ(nd)一定为0。如果qi不全相同,把pi分成qi最大和qi不是最大两部分,那么f(d)只取决于前一部分的取值。而对于前一部分的每种选法,我们只关心后一部分选择的xi=qi−1的项的个数的奇偶。显然选奇数个和选偶数个的方案数是相同的,所以g(n)=0。而当qi全相同时,我们也可以得到类似的结论,只在所有的xi均取到qi−1时除外,这时f(d)=qi−1(其他时候都有f(d)=qi)。结合μ,我们得到g(n)=(−1)k+1。于是我们在线性筛的时候维护每个数最小质因数的指数和幂,不难讨论一下求出答案。
==∑i=1n∑j=1mf(gcd(i,j))∑d=1nf(d)∑x=1⌊nd⌋μ(x)⌊ndx⌋⌊mdx⌋∑D=1n∑d|Df(d)μ(Dd)⌊ndx⌋⌊mdx⌋
记g=f∗μ,只要我们线性筛出g,就可以O(n+Tn‾‾√)解决问题。
设g(n)=∑d|nf(d)μ(nd),n=∏ki=1pqii,d=∏ki=1pixi。显然xi=qi或者xi=qi−1,否则μ(nd)一定为0。如果qi不全相同,把pi分成qi最大和qi不是最大两部分,那么f(d)只取决于前一部分的取值。而对于前一部分的每种选法,我们只关心后一部分选择的xi=qi−1的项的个数的奇偶。显然选奇数个和选偶数个的方案数是相同的,所以g(n)=0。而当qi全相同时,我们也可以得到类似的结论,只在所有的xi均取到qi−1时除外,这时f(d)=qi−1(其他时候都有f(d)=qi)。结合μ,我们得到g(n)=(−1)k+1。于是我们在线性筛的时候维护每个数最小质因数的指数和幂,不难讨论一下求出答案。
#include<cstdio> #include<algorithm> using namespace std; #define LL long long const int maxn=10000010; int mnp[maxn],mnq[maxn],g[maxn],sg[maxn],prm[maxn],tot; void init() { for (int i=2;i<=maxn;i++) { if (!mnp[i]) { mnp[i]=i; mnq[i]=1; g[i]=1; prm[++tot]=i; } for (int j=1;j<=tot&&(LL)i*prm[j]<=maxn;j++) if (i%prm[j]) { mnp[i*prm[j]]=prm[j]; mnq[i*prm[j]]=1; if (mnq[i]==1) g[i*prm[j]]=-g[i]; } else { mnp[i*prm[j]]=mnp[i]*prm[j]; mnq[i*prm[j]]=mnq[i]+1; if (i/mnp[i]==1) g[i*prm[j]]=1; else if (mnq[i/mnp[i]]==mnq[i*prm[j]]&&mnp[i/mnp[i]]!=mnp[i*prm[j]]) g[i*prm[j]]=-g[i/mnp[i]]; break; } sg[i]=sg[i-1]+g[i]; } } LL solve(int n,int m) { LL ret=0; for (int i=1,j;i<=n&&i<=m;i=j+1) { j=min(n/(n/i),m/(m/i)); ret+=(LL)(sg[j]-sg[i-1])*(n/i)*(m/i); } return ret; } int main() { init(); int T,n,m; scanf("%d",&T); while (T--) { scanf("%d%d",&n,&m); printf("%lld\n",solve(n,m)); } }
相关文章推荐
- bzoj3309: DZY Loves Math
- BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)
- bzoj3309: DZY Loves Math
- Bzoj3309 DZY Loves Math
- BZOJ3309 : DZY Loves Math
- BZOJ3309: DZY Loves Math
- BZOJ3309: DZY Loves Math
- bzoj3309 DZY Loves Math
- Bzoj3309: DZY Loves Math
- BZOJ3309: DZY Loves Math
- BZOJ3309: DZY Loves Math
- BZOJ 3309 DZY Loves Math (莫比乌斯反演的应用 好题)
- bzoj3560 DZY Loves Math V 数论
- 3462: DZY Loves Math II
- BZOJ3462: DZY Loves Math II
- BZOJ3512 DZY Loves Math IV
- bzoj 3309 DZY Loves Math - 莫比乌斯反演 - 线性筛
- bzoj 3560 DZY Loves Math V - 线性筛 - 扩展欧几里得算法
- BZOJ3739 : DZY loves math VIII
- [bzoj3309] DZY Loves Math