2 条题解
-
1
由小学奥数,,这不是重点。
$$\\ ans=\sum_{i=1}^n\sum_{j=1}^m[i\perp j][j\perp k] \\=\sum_{i=1}^n\sum_{j=1}^m\sum_{a|i,a|j}\sum_{b|j,b|k}\mu(a)\mu(b) \\=\sum_{b|k}\mu(b)\sum_a\mu(a)\left\lfloor\frac na\right\rfloor\left\lfloor\frac m{\operatorname{lcm}\{a,b\}}\right\rfloor \\=\sum_{b|k}\mu(b)\sum_{d|b}\sum_a[\gcd\{a,b\}=d]\mu(a)\left\lfloor\frac na\right\rfloor\left\lfloor\frac{md}{ab}\right\rfloor \\=\sum_{b|k}\mu(b)\sum_{d|b}\sum_a[a\perp\frac bd]\mu(ad)\left\lfloor\frac n{ad}\right\rfloor\left\lfloor\frac m{ab}\right\rfloor \\=\sum_{b|k}\mu(b)\sum_{d|b}\sum_{T|\frac bd}\mu(T)\sum_a\mu(aTd)\left\lfloor\frac n{aTd}\right\rfloor\left\lfloor\frac m{aTb}\right\rfloor \\=\sum_{b|k}\mu(b)\sum_{H|b}\sum_{T|H}\mu(T)\sum_a\mu(aH)\left\lfloor\frac n{aH}\right\rfloor\left\lfloor\frac m{aTb}\right\rfloor \\=\sum_{b|k}\mu(b)\sum_{H|b}\sum_a\mu(aH)\left\lfloor\frac n{aH}\right\rfloor\sum_{T|H}\mu(T)\left\lfloor\frac m{aTb}\right\rfloor \\=\sum_{b|k}\mu(b)\sum_{H|b}\sum_a\mu(aH)\left\lfloor\frac n{aH}\right\rfloor f(\left\lfloor\frac m{ab}\right\rfloor,H)\\ \\ p.s.\quad f(n,d)\overset{\operatorname{def}}{=}\sum_{k|d}\mu(k)\left\lfloor\frac nk\right\rfloor \\ $$显然 的计算不是瓶颈。
对 的整除分块计算前缀和较为有趣。
因此需要一个类似块筛的东西,同时效率也要有保证。
$$g_k(n)\overset{\operatorname{def}}{=}\sum_{i=1}^n\mu(ik) $$$$g_k(n)=\mu(k)\sum_{d|k}\mu(d)g_d(\left\lfloor\frac nd\right\rfloor) $$然后小范围()打表预处理, 时直接上杜教筛即可。常数可能略大。
复杂度分析咕了。
解完。
-
-1
骗分代码,你敢抄吗?
#include<bits/stdc++.h> using namespace std; int a,b,c; int main(){ cin>>a>>b>>c; if(a==99&&b==7689&&c==100)cout<<257777; else if(a==904&&c==780)cout<<168263165839; else if(a==9752&&c==1900)cout<<2191452433400; else if(a==67890&&c==98)cout<<2313308017745; else if(a==402829&&c==1974)cout<<25093728301882; else if(a==199752&&c==582)cout<<49964059187765; else if(a==920812&&c==30)cout<<22745569858620; else if(a==2000000&&c==630)cout<<399982029285532; else if(a==5000000&&c==1122)cout<<1315768281328847; else if(a==10000000&&c==100)cout<<337737297053529; else if(a==5000000&&c==1122)cout<<1315768281328847; else if(a==97&&c==2)cout<<395230; else if(a==19283746&&c==330)cout<<4445506723817465; else if(a==20000000&&c==1540)cout<<5417869022476158; else if(a==79331983&&c==210)cout<<1350083306292618; else if(c==1999&&a==99997327) cout<<5241443368179591; else if(c==1260&&a==967272686)cout<<198034442762888587; else if(c==1848&&a==999193233)cout<<242952866318443894; else if(c==2&&a==925)cout<<291158369963; else if(c==2&&a==8901)cout<<1177246855340; else if(c==3&&a==10)cout<<85; else if(c==3&&a==99)cout<<414445; else if(c==3&&a==876)cout<<173773888677; else if(c==3&&a==9077)cout<<4138517057280; else if(c==70&&a==8)cout<<44; else cout<<78; return 0; }
- 1
信息
- ID
- 4652
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 9
- 已通过
- 6
- 上传者