题解:

考虑枚举gcd,然后问题转化为求<=n且与n互质的数的和。

这是有公式的f[i]=phi[i]*i/2

然后卡一卡时就可以过了。

代码:

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cmath>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<iostream>
  7. #include<vector>
  8. #include<map>
  9. #include<set>
  10. #include<queue>
  11. #include<string>
  12. #define inf 1000000000
  13. #define maxn 1000000+5
  14. #define maxm 100000+5
  15. #define eps 1e-10
  16. #define ll long long
  17. #define pa pair<int,int>
  18. #define for0(i,n) for(int i=0;i<=(n);i++)
  19. #define for1(i,n) for(int i=1;i<=(n);i++)
  20. #define for2(i,x,y) for(int i=(x);i<=(y);i++)
  21. #define for3(i,x,y) for(int i=(x);i>=(y);i--)
  22. #define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
  23. #define mod 1000000007
  24. using namespace std;
  25. inline int read()
  26. {
  27. int x=,f=;char ch=getchar();
  28. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  29. while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
  30. return x*f;
  31. }
  32. int tot,p[maxn];
  33. ll fai[maxn];
  34. bool v[maxn];
  35. void get()
  36. {
  37. fai[]=;
  38. for2(i,,)
  39. {
  40. if(!v[i])p[++tot]=i,fai[i]=i-;
  41. for1(j,tot)
  42. {
  43. int k=i*p[j];
  44. if(k>)break;
  45. v[k]=;
  46. if(i%p[j])fai[k]=fai[i]*(p[j]-);
  47. else {fai[k]=fai[i]*p[j];break;}
  48. }
  49. }
  50. for2(i,,)(fai[i]*=(ll)i)>>=;
  51. }
  52. int main()
  53. {
  54. freopen("input.txt","r",stdin);
  55. freopen("output.txt","w",stdout);
  56. get();
  57. int T=read();
  58. while(T--)
  59. {
  60. int n=read(),m=sqrt(n);ll ans=;
  61. for1(i,m)if(n%i==)ans+=fai[n/i]+fai[i];
  62. if(m*m==n)ans-=fai[m];
  63. printf("%lld\n",ans*(ll)n);
  64. }
  65. return ;
  66. }

UPD:其实我们可以预处理出答案,用普通的筛法。

代码:

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cmath>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<iostream>
  7. #include<vector>
  8. #include<map>
  9. #include<set>
  10. #include<queue>
  11. #include<string>
  12. #define inf 1000000000
  13. #define maxn 1000000+5
  14. #define maxm 1000000
  15. #define eps 1e-10
  16. #define ll long long
  17. #define pa pair<int,int>
  18. #define for0(i,n) for(int i=0;i<=(n);i++)
  19. #define for1(i,n) for(int i=1;i<=(n);i++)
  20. #define for2(i,x,y) for(int i=(x);i<=(y);i++)
  21. #define for3(i,x,y) for(int i=(x);i>=(y);i--)
  22. #define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
  23. #define mod 1000000007
  24. using namespace std;
  25. inline int read()
  26. {
  27. int x=,f=;char ch=getchar();
  28. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  29. while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
  30. return x*f;
  31. }
  32. int tot,p[maxn];
  33. ll fai[maxn],ans[maxn];
  34. bool v[maxn];
  35. void get()
  36. {
  37. fai[]=;
  38. for2(i,,maxm)
  39. {
  40. if(!v[i])p[++tot]=i,fai[i]=i-;
  41. for1(j,tot)
  42. {
  43. int k=i*p[j];
  44. if(k>maxm)break;
  45. v[k]=;
  46. if(i%p[j])fai[k]=fai[i]*(p[j]-);
  47. else {fai[k]=fai[i]*p[j];break;}
  48. }
  49. }
  50. for2(i,,maxm)(fai[i]*=(ll)i)>>=;
  51. for1(i,maxm)
  52. for(int j=i;j<=maxm;j+=i)
  53. ans[j]+=fai[i];
  54. for1(i,maxm)ans[i]*=(ll)i;
  55. }
  56. int main()
  57. {
  58. freopen("input.txt","r",stdin);
  59. freopen("output.txt","w",stdout);
  60. get();
  61. int T=read();
  62. while(T--)printf("%lld\n",ans[read()]);
  63. return ;
  64. }

2226: [Spoj 5971] LCMSum

Time Limit: 20 Sec  Memory Limit: 259 MB
Submit: 659  Solved: 292
[Submit][Status]

Description

Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Least Common Multiple of the integers i and n.

Input

The first line contains T the number of test cases. Each of the next T lines contain an integer n.

Output

Output T lines, one for each test case, containing the required sum.

Sample Input

3
1
2
5

Sample Output

1
4
55

HINT

Constraints

1 <= T <= 300000
1 <= n <= 1000000

BZOJ2226: [Spoj 5971] LCMSum的更多相关文章

  1. 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)

    [BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...

  2. bzoj 2226: [Spoj 5971] LCMSum 数论

    2226: [Spoj 5971] LCMSum Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 578  Solved: 259[Submit][St ...

  3. BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论

    BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...

  4. 【bzoj2226】[Spoj 5971] LCMSum 欧拉函数

    题目描述 Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Leas ...

  5. BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2226 题解: 题目要求的是Σn*i/gcd(i,n) i∈[1,n] 把n提出来变成Σi/g ...

  6. BZOJ 2226: [Spoj 5971] LCMSum 莫比乌斯反演 + 严重卡常

    Code: #pragma GCC optimize(2) #include<bits/stdc++.h> #define setIO(s) freopen(s".in" ...

  7. BZOJ 2226 [Spoj 5971] LCMSum

    题解:枚举gcd,算每个gcd对答案的贡献,贡献用到欧拉函数的一个结论 最后用nlogn预处理一下,O(1)出答案 把long long 打成int 竟然没看出来QWQ #include<ios ...

  8. BZOJ 2226 【SPOJ 5971】 LCMSum

    题目链接:LCMSum 这个题显然就是要我们推式子了……那么就来推一波: \begin{aligned}&\sum_{i=1}^n lcm(i,n) \\=&\sum_{i=1}^n\ ...

  9. 【spoj 5971】lcmsum

    全场都 AK 了就我爆 0 了 题意 \(t\) 组询问,每组询问给定 \(n\),求 \(\sum\limits_{k=1}^n [n,k]\).其中 \([a,b]\) 表示 \(a\) 和 \( ...

随机推荐

  1. 使用node的http模块实现爬虫功能,并把爬到的数据存入mongondb

    刚开始使用http中间件做爬虫其实蛮多坑的,最主要的坑就是编码问题,有很多中文网站的采用的gb2313的编码方式,这个在爬到的报文解析就很蛋碎, 因为http中间件对utf-8支持的比较好,所以针对这 ...

  2. cf 359C

    stl 里的map使用   然后就是快速幂取余 #include <cstdio> #include <cstring> #include <algorithm> ...

  3. 一个碉堡的swing类

    今天遇到一个掉了一笔的swing类.可以完美的解决JFrame下设置背景的问题.任意size.太掉了.特记于此 import java.awt.*; import java.awt.image.Buf ...

  4. Biba模型简介

    上周上信息安全的课,老师留了个Biba模型的作业.自己看书了解了一下,记录如下. 参考资料:石文昌<信息系统安全概论第2版> ISBN:978-7-121-22143-9 Biba模型是毕 ...

  5. Android中数据存储之SharedPreferences

    import android.content.Context; import android.content.SharedPreferences; import android.content.Sha ...

  6. 套题T7

    P4712 铺瓷砖 时间: 1000ms / 空间: 65536KiB / Java类名: Main   描述

  7. 找啊找啊找GF

    P1013 找啊找啊找GF 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手, ...

  8. SQL Server Profiler监控SQL Server性能

    全面掌握SQL Server Profiler 1.       原理与相关概念介绍 SQL Server Profiler,大家已经非常熟悉.常常在性能优化中使用,本文档详细介绍SQL Server ...

  9. Android:Context的作用

    Context字面意思上下文,Activity中我们直接用this代替,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,改用ActivityName.t ...

  10. C#四种文件流的区别(转)

    1.FileStream类的读写操作 FileStream类可以对任意类型的文件进行读取操作,而且我们也可以按照需要指定每一次读取字节长度,以此减少内存的消耗,提高读取效率. 代码实例: //创建文件 ...