interlinkage:

https://nanti.jisuanke.com/t/38226

description:

solution:

显然$\frac{\phi(j^2)}{\phi(j)}=j,\frac{\phi(k^3)}{\phi(k)}=k^2$

原式可以化简为

$\sum_{i=1}^{n}\sum_{j=1}^n\sum_{k=1}^{n}jk^2\phi(gcd(i,j,k))$

我们枚举$gcd(i,j,k)$,得

$\sum_{d=1}^{n}\phi(d)\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^njk^2[gcd(i,j,k)==d]$

$\sum_{d=1}^{n}\phi(d)\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}\sum_{k=1}^{n/d}jk^2d^3[gcd(i,j,k)==1]$

$\sum_{d=1}^{n}\phi(d)\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}\sum_{k=1}^{n/d}jk^2d^3\sum_{s|gcd(i,j,k)}\mu(s)$

设$sum1(n)=\sum_{i=1}^{n}i,sum2(n)=\sum_{i=1}^{n}i^2$

$\sum_{d=1}^{n}\phi(d)\sum_{i=1}^{n/d}\mu(i) \lfloor\frac{n}{id}\rfloor sum1(\lfloor\frac{n}{id}\rfloor) sum2(\lfloor\frac{n}{id}\rfloor)i^3d^3$

枚举$id$

$\sum_{T=1}^{n}\phi*\mu(T) T^3 \lfloor\frac{n}{T}\rfloor sum1(\lfloor\frac{n}{T}\rfloor) sum2(\lfloor\frac{n}{T}\rfloor)$

显然$\phi*\mu(T) T^3$是一个积性函数,我们可以把它线性筛出来

维护一下每个数的最小质因子及其最小质因子的指数就好了

后面显然可以分块,时间复杂度为$O(N+T\sqrt{n})$

code:

  1. #include<algorithm>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<cstdio>
  5. using namespace std;
  6. typedef long long ll;
  7.  
  8. const int N=1e7+;
  9. const int mo=1ll<<;
  10. int cnt;
  11. int prime[N],num[N],mi[N],f[N],sum[N];
  12. bool vis[N];
  13. inline int read()
  14. {
  15. char ch=getchar();int s=,f=;
  16. while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
  17. while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
  18. return s*f;
  19. }
  20. int qpow(int a,int b)
  21. {
  22. int re=;
  23. for (;b;b>>=,a=a*a) if (b&) re=re*a;
  24. return re;
  25. }
  26. ll phi(int p,int k)
  27. {
  28. if (!k) return ;
  29. return 1ll*qpow(p,k-)*(p-);
  30. }
  31. void pre()
  32. {
  33. ll sum1=,sum2=;
  34. for (int i=;i<N;i++)
  35. {
  36. sum1=(sum1+i)%mo;
  37. sum2=(sum2+1ll*i*i%mo)%mo;
  38. sum[i]=sum1*sum2%mo*i%mo;
  39. }
  40. f[]=;
  41. for (int i=;i<N;i++)
  42. {
  43. if (!vis[i])
  44. {
  45. prime[++cnt]=i;
  46. mi[i]=i;num[i]=;
  47. f[i]=1ll*i*i%mo*i%mo*(i-)%mo;
  48. }
  49. for (int j=;j<=cnt&&prime[j]*i<N;j++)
  50. {
  51. vis[i*prime[j]]=;
  52. mi[i*prime[j]]=prime[j];
  53. if (mi[i]==prime[j]) num[i*prime[j]]=num[i]+;
  54. else num[i*prime[j]]=;
  55. if (i%prime[j]) f[i*prime[j]]=1ll*f[i]*f[prime[j]]%mo;
  56. else
  57. {
  58. int q=qpow(prime[j],num[i*prime[j]]);
  59. f[q]=1ll*(phi(prime[j],num[i*prime[j]])-phi(prime[j],num[i*prime[j]]-))*q%mo*q%mo*q%mo;
  60. f[i*prime[j]]=1ll*f[i*prime[j]/q]*f[q]%mo;
  61. break;
  62. }
  63. }
  64. }
  65. for (int i=;i<N;i++) f[i]=1ll*(f[i-]+f[i])%mo;
  66. }
  67. int main()
  68. {
  69. pre();
  70. int T=read();
  71. while (T--)
  72. {
  73. int n=read();
  74. ll ans=;
  75. for (int l=,r;l<=n;l=r+)
  76. {
  77. r=n/(n/l);
  78. (ans+=1ll*(f[r]-f[l-])*sum[n/l]%mo)%mo;
  79. }
  80. printf("%lld\n",1ll*(ans+mo)%mo);
  81. }
  82. return ;
  83. }

[计蒜客] tsy's number 解题报告 (莫比乌斯反演+数论分块)的更多相关文章

  1. 计蒜客31452 Supreme Number(找规律)

    A prime number (or a prime) is a natural number greater than 11 that cannot be formed by multiplying ...

  2. 计蒜客 31452 - Supreme Number - [简单数学][2018ICPC沈阳网络预赛K题]

    题目链接:https://nanti.jisuanke.com/t/31452 A prime number (or a prime) is a natural number greater than ...

  3. [jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)

    题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注: ...

  4. [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)

    题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算​$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...

  5. 计蒜客 A1607 UVALive 8512 [ACM-ICPC 2017 Asia Xi'an]XOR

    ICPC官网题面假的,要下载PDF,点了提交还找不到结果在哪看(我没找到),用VJ交还直接return 0;也能AC 计蒜客题面 这个好 Time limit 3000 ms OS Linux 题目来 ...

  6. 计蒜客:Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

  7. 计蒜客 31436 - 提高水平 - [状压DP]

    题目链接:https://nanti.jisuanke.com/t/31436 作为一名车手,为了提高自身的姿势水平,平时的练习是必不可少的.小 J 每天的训练包含 $N$ 个训练项目,他会按照某个顺 ...

  8. 计蒜客 31434 - 广场车神 - [DP+前缀和]

    题目链接:https://nanti.jisuanke.com/t/31434 小 D 是一位著名的车手,他热衷于在广场上飙车.每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛. 小 D 所 ...

  9. 【LeetCode】306. Additive Number 解题报告(Python)

    [LeetCode]306. Additive Number 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...

随机推荐

  1. 深圳面试一周记录——.NET(B/S)开发

    个人简单信息:2011年毕业,最高学历大专,最近一份工作在广州:有做架构设计经验,有一年的带团队(10人左右)经验:互联网和行业软件公司都待过. 为免不必要的争论,本文说地址的就不说公司行业,说公司行 ...

  2. THREE.js代码备份——canvas_ascii_effect(以AscII码显示图形)

    <!DOCTYPE html> <html lang="en"> <head> <title>three.js - ASCII Ef ...

  3. vue中怎样实现 路由拦截器

    vue中怎样实现 路由拦截器(当用户没有登录的时候,跳转到登录页面,已经登录的时候,不能跳转到登录页,除非后台token失效) 在 我们需要实现这样 一个功能,登录拦截 其实就是 路由拦截,首先在定义 ...

  4. Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码

    先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...

  5. BZOJ 4999: This Problem Is Too Simple! DFS序+LCA+树状数组+离线

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) , ...

  6. 【剑指Offer】26、二叉搜索树与双向链表

      题目描述:   输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.   解题思路:   首先要理解此题目的含义,在双向链表中,每个结 ...

  7. Problem 19

    Problem 19 You are given the following information, but you may prefer to do some research for yours ...

  8. c#打包时 Could not find file "I:\VS2012\myWork\SmartCam\SmartCam\bin\Debug\Emgu.CV.DebuggerVisualizers.VS2012.dll" ISEXP : error : -6103: Could not find file "I:\VS2012\myWork\SmartCam\SmartCam\bin

    1.错误:C#打包时发生如下错误: 错误 1 -6103: Could not find file "I:\VS2012\myWork\SmartCam\SmartCam\bin\Debug ...

  9. redis--周边知识点

    一般Redis服务器内存超过128G内存的机器是非常少的 很少在redis中缓存视频,除非是快播,一般都是缓存文本字段 redis可视化的工具和SQL的管理工具是不一样的,最好是使用REDIS的she ...

  10. HDU 3662

    求的是凸包有多少个面. 注意,求的是面.这就需要把同一个面的三角形合并.只需判断两个三角形的法向量是否同向平行. /* 增量法求凸包.选取一个四面体,同时把它各面的方向向量向外,增加一个点时,若该点与 ...