题意:求\(\sum_{i=1}^n\sum_{j=1}^n\phi(gcd(i,j))\)

题解:\(\sum_{i==1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)==d]*\phi(d)\)

\(=\sum_{d=1}^n\phi(d)*\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)==d]\)

\(=\sum_{d=1}^n\phi(d)*\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}[gcd(i,j)==1]\)

\(=\sum_{d=1}^n\phi(d)*(2*\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}\phi({\lfloor \frac{n}{d} \rfloor})-1)\)

\(=\sum_{d=1}^n\phi(d)*sum(\lfloor \frac{n}{d} \rfloor)-sum(n)\)

求个前缀和分块搞一搞就好了

  1. /**************************************************************
  2. Problem: 4804
  3. User: walfy
  4. Language: C++
  5. Result: Accepted
  6. Time:4108 ms
  7. Memory:167304 kb
  8. ****************************************************************/
  9. //#pragma GCC optimize(2)
  10. //#pragma GCC optimize(3)
  11. //#pragma GCC optimize(4)
  12. //#pragma GCC optimize("unroll-loops")
  13. //#pragma comment(linker, "/stack:200000000")
  14. //#pragma GCC optimize("Ofast,no-stack-protector")
  15. //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  16. #include<bits/stdc++.h>
  17. #define fi first
  18. #define se second
  19. #define db double
  20. #define mp make_pair
  21. #define pb push_back
  22. #define pi acos(-1.0)
  23. #define ll long long
  24. #define vi vector<int>
  25. #define mod 998244353
  26. #define ld long double
  27. #define C 0.5772156649
  28. #define ls l,m,rt<<1
  29. #define rs m+1,r,rt<<1|1
  30. #define pll pair<ll,ll>
  31. #define pil pair<int,ll>
  32. #define pli pair<ll,int>
  33. #define pii pair<int,int>
  34. //#define cd complex<double>
  35. #define ull unsigned long long
  36. #define base 1000000000000000000
  37. #define Max(a,b) ((a)>(b)?(a):(b))
  38. #define Min(a,b) ((a)<(b)?(a):(b))
  39. #define fin freopen("a.txt","r",stdin)
  40. #define fout freopen("a.txt","w",stdout)
  41. #define fio ios::sync_with_stdio(false);cin.tie(0)
  42. template<typename T>
  43. inline T const& MAX(T const &a,T const &b){return a>b?a:b;}
  44. template<typename T>
  45. inline T const& MIN(T const &a,T const &b){return a<b?a:b;}
  46. inline void add(ll &a,ll b){a+=b;if(a>=mod)a-=mod;}
  47. inline void sub(ll &a,ll b){a-=b;if(a<0)a+=mod;}
  48. inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
  49. inline ll qp(ll a,ll b){ll ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod,b>>=1;}return ans;}
  50. inline ll qp(ll a,ll b,ll c){ll ans=1;while(b){if(b&1)ans=ans*a%c;a=a*a%c,b>>=1;}return ans;}
  51. using namespace std;
  52. const double eps=1e-8;
  53. const ll INF=0x3f3f3f3f3f3f3f3f;
  54. const int N=10000000+10,maxn=400000+10,inf=0x3f3f3f3f;
  55. int prime[N],cnt,phi[N];
  56. bool mark[N];
  57. ll sum[N];
  58. void init()
  59. {
  60. phi[1]=1;
  61. for(int i=2;i<N;i++)
  62. {
  63. if(!mark[i]){prime[++cnt]=i,phi[i]=i-1;}
  64. for(int j=1;j<=cnt&&i*prime[j]<N;j++)
  65. {
  66. mark[i*prime[j]]=1;
  67. phi[i*prime[j]]=phi[i]*phi[prime[j]];
  68. if(i%prime[j]==0)
  69. {
  70. phi[i*prime[j]]=phi[i]*prime[j];
  71. break;
  72. }
  73. }
  74. }
  75. for(int i=1;i<N;i++)sum[i]=sum[i-1]+phi[i];
  76. }
  77. int main()
  78. {
  79. init();
  80. int T;scanf("%d",&T);
  81. while(T--)
  82. {
  83. ll n,ans=0;
  84. scanf("%lld",&n);
  85. for(ll i=1,j;i<=n;i=j+1)
  86. {
  87. j=n/(n/i);
  88. ans+=(sum[j]-sum[i-1])*sum[n/i];
  89. }
  90. printf("%lld\n",2*ans-sum[n]);
  91. }
  92. return 0;
  93. }
  94. /********************
  95. ********************/

bzoj4804: 欧拉心算 欧拉筛的更多相关文章

  1. bzoj 4804 欧拉心算 欧拉函数,莫比乌斯

    欧拉心算 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 408  Solved: 244[Submit][Status][Discuss] Descr ...

  2. [BZOJ4804]欧拉心算:线性筛+莫比乌斯反演

    分析 关于这道题套路到不能再套路了没什么好说的,其实发这篇博客的目的只是为了贴一个线性筛的模板. 代码 #include <bits/stdc++.h> #define rin(i,a,b ...

  3. 【bzoj4804】欧拉心算 欧拉函数

    题目描述 给出一个数字N 输入 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 输出 按读入顺序输出答案. 样例输入 1 1 ...

  4. BZOJ 4804: 欧拉心算 欧拉函数

    Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 题解: 求 $\sum_ ...

  5. 【BZOJ4804】欧拉心算 莫比乌斯反演+线性筛

    [BZOJ4804]欧拉心算 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10 ...

  6. 【bzoj4804】欧拉心算 解题报告

    [bzoj4804]欧拉心算 Description 给出一个数字\(N\),计算 \[\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\] Input 第一行为 ...

  7. BZOJ_4804_欧拉心算_欧拉函数

    BZOJ_4804_欧拉心算_欧拉函数 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N&l ...

  8. 【luogu3768】简单的数学题 欧拉函数(欧拉反演)+杜教筛

    题目描述 给出 $n$ 和 $p$ ,求 $(\sum\limits_{i=1}^n\sum\limits_{j=1}^nij\gcd(i,j))\mod p$ . $n\le 10^{10}$ . ...

  9. GCD nyoj 1007 (欧拉函数+欧几里得)

    GCD  nyoj 1007 (欧拉函数+欧几里得) GCD 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 The greatest common divisor ...

随机推荐

  1. IE8下面parseInt('08')、parseInt('09')会转成0

    例子: <html> <body> <script type="text/javascript"> for(var i=1;i<=20;i ...

  2. better-scroll影响vue中radio和checkbox的双向数据绑定

    我的解决办法:radio <input v-model="answer" type="radio" name="answer" val ...

  3. 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)

    深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning) 2018-08-09 12:21:33 The video tutorial can ...

  4. vs项目模板

    创建项目模板 Creating a VSIX Deployable Project (or Item) Template with Custom Wizard Support Create a Pro ...

  5. Python打印矩形、直角三角形、等腰三角形、菱形

    思路如下: (1)先打印一个星号并换行 print("*") (2)打印一行6个星号 for i in range(6): print("*", end=&qu ...

  6. 火狐对 min-height 的支持

    代码: <!DOCTYPE html> <style> .com-center-banner { background: #f00; } .com-center-banner ...

  7. SAP FI 常用表

    SAP FI 常用表 GL 部分: FAGLFLEXT 新总账汇总表 GLT0 旧总帐汇总表 SKA1 总账科目主记录 (科目表) 科目表层数据 SKAT 总帐科目主记录(科目表:说明) 包括语言代码 ...

  8. 关于导入geoserver 源码到Eclipse编译运行

    参考http://blog.csdn.net/gisshixisheng/article/details/43016443 和  http://blog.sina.com.cn/s/blog_6e37 ...

  9. SVN服务器搭建和使用教程

    安装SVNserver 点击Next下一步,如下: 然后再点击Next项,下一步,如下: 点击[Next] 如下: Location是指VisualSVN Server的安装目录,Repository ...

  10. _itemmod_extra_equipments

    双甲 可以控制获得属性的倍率,及是否可以取回物 `stat_muil`属性倍率(item_template中stat) `enchant_muil`附魔效果中的属性倍率(一些附魔会提升属性,可在些配置 ...