2 条题解

  • 1
    @ 2022-8-7 0:06:20

    由小学奥数,ans=i=1nj=1m[ij][jk]ans=\sum_{i=1}^n\sum_{j=1}^m[i\perp j][j\perp k],这不是重点。

    $$\\ 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 \\ $$

    显然 ff 的计算不是瓶颈。

    aa 的整除分块计算前缀和较为有趣。

    因此需要一个类似块筛的东西,同时效率也要有保证。

    $$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) $$

    然后小范围(nk106nk\le10^6)打表预处理,k=1k=1 时直接上杜教筛即可。常数可能略大。

    复杂度分析咕了。

    解完。

    • -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;
      }
      
      • @ 2022-8-7 21:02:14

        这么做不好吧(

    • 1

    信息

    ID
    4652
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    9
    已通过
    6
    上传者