**题意:**给出n [1,3*1e6] 求![](http://images2015.cnblogs.com/blog/842069/201610/842069-20161028153034031-1102951645.png)
并模2^64。
**思路:**先手写出算式![](http://images2015.cnblogs.com/blog/842069/201610/842069-20161028153052296-1309072803.png)

观察发现可以化成

那么关键在于如何求得i为1~n的lcm(i,n)之和。可以知道lcm(a,b)为ab/gcd(a,b)

变换得(a/gcd) * (b/gcd)
gcd 由于GCD的性质,可以知道a/gcd 与 b/gcd是互质的两个质数。由此可以想到应用欧拉函数,并且由性质能够证明 n*phi(n)/2为小于n所有与n互质数之和(证明:已知一个质数p那么显然n-p与它互质,那么phi(n)中有phi(n)/2对数,每对数和为n)



设n/gcd(I,n)为d则

由此题目化成枚举d即可。还需注意格式的控制转换,本题需要模2^64 只需设unsigned long long 溢出即模,内存限制是刚好卡住的。

  1. #include <stdio.h>

  2. #include <iostream>

  3. #include <string.h>

  4. #include <algorithm>

  5. #include <utility>

  6. #include <vector>

  7. #include <map>

  8. #include <set>

  9. #include <string>

  10. #include <stack>

  11. #include <queue>

  12. #define LL unsigned long long

  13. #define MMF(x) memset((x),0,sizeof(x))

  14. #define MMI(x) memset((x), INF, sizeof(x))

  15. using namespace std;



  16. const int INF = 0x3f3f3f3f;

  17. const int N = 1e6+10;



  18. int eul[3*N];

  19. LL fa[3*N];

  20. LL ans[3*N];

  21. void eular()

  22. {

  23. MMF(eul);

  24. MMF(fa);



  25. eul[1] = 1;

  26. for(int i = 2; i < 3*N; i++)

  27. {

  28. if(!eul[i])

  29. {

  30. for(int j = i; j < 3*N; j+=i)

  31. {

  32. if(!eul[j])

  33. eul[j] = j;

  34. eul[j] = eul[j]/i * (i-1);

  35. }

  36. }

  37. }

  38. ans[0] = ans[1] = 0;

  39. for(LL i = 2; i < 3*N; i++)

  40. {

  41. for(LL j = i; j < 3*N; j += i)

  42. {

  43. LL t = j * eul[i] / 2;

  44. fa[j] += i* t;

  45. }

  46. ans[i] = ans[i-1] + fa[i];

  47. }

  48. }
  49.  


  50. int main()

  51. {

  52. eular();

  53. int T;

  54. int cnt = 0;

  55. scanf("%d", &T);

  56. while(T--)

  57. {

  58. LL n;

  59. scanf("%llu", &n);

  60. printf("Case %d: %llu\n", ++cnt, ans[n]);

  61. //printf("%d\n",eul[3000000]);

  62. }

  63. return 0;

  64. }

  65. /*

  66. 5

  67. 2

  68. 10

  69. 13

  70. 100000

  71. 3000000

  72. **/

LightOJ 1375 - LCM Extreme 莫比乌斯反演或欧拉扩展的更多相关文章

  1. BZOJ 2818 Gcd (莫比乌斯反演 或 欧拉函数)

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2534  Solved: 1129 [Submit][Status][Discu ...

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

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

  3. UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.

    题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...

  4. 【BZOJ2818】Gcd(莫比乌斯反演,欧拉函数)

    题意:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对 1<=N<=10^7 思路:莫比乌斯反演,同BZOJ2820…… ; ..max]of ...

  5. JZYZOJ 1375 双亲数 莫比乌斯反演

    http://172.20.6.3/Problem_Show.asp?id=1375 网上搜推理图. 有一段没有写莫比乌斯反演都快忘了..数学能力--,定理完全不会推,但是这道题整体来说应该是比较好写 ...

  6. 洛谷 - SP3871 GCDEX - GCD Extreme - 莫比乌斯反演

    易得 $\sum\limits_{g=1}^{n} g \sum\limits_{k=1}^{n} \mu(k) \lfloor\frac{n}{gk}\rfloor \lfloor\frac{n}{ ...

  7. BZOJ2694 Lcm 【莫比乌斯反演】

    BZOJ2694 Lcm Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample I ...

  8. [NOI2010]能量采集 BZOJ2005 数学(反演)&&欧拉函数,分块除法

    题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得非常整齐,一共 ...

  9. GCD - Extreme (II) UVA - 11426 欧拉函数_数学推导

    Code: #include<cstdio> using namespace std; const int maxn=4000005; const int R=4000002; const ...

随机推荐

  1. 软件工程第二周PSP

  2. C++ 普通函数和虚函数调用的区别

    引出:写个类A,声明类A指针指向NULL,调用类A的方法会有什么后果,编译通过吗,运行会通过吗? #include<stdio.h> #include<iostream> us ...

  3. Flink中的数据传输与背压

    一图道尽心酸: 大的原理,上游的task产生数据后,会写在本地的缓存中,然后通知JM自己的数据已经好了,JM通知下游的Task去拉取数据,下游的Task然后去上游的Task拉取数据,形成链条. 但是在 ...

  4. MyBatis的架构设计以及实例分析

            MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个sel ...

  5. 第64天:CSS常用命名规范,有用!

    CSS常用命名,必须记住 一.常用命名 标题:title 摘要:summary 箭头:arrow 商标:label 网站标志:logo 转角/圆角:corner 横幅广告:banner 子菜单:sub ...

  6. WPF如何将数据库中的二进制图片数据显示在Image控件上

    首先在xaml文件里定义一个Image控件,取名为img MemoryStream stream = new MemoryStream(获得的数据库对象): BitMapImage bmp = new ...

  7. 51nod 1286 三段子串(树状数组+拓展kmp)

    题意: 给定一个字符串S,找到另外一个字符串T,T既是S的前缀,也是S的后缀,并且在中间某个地方也出现一次,并且这三次出现不重合.求T最长的长度. 例如:S = "abababababa&q ...

  8. Vika and Segments - CF610D

    Vika has an infinite sheet of squared paper. Initially all squares are white. She introduced a two-d ...

  9. Docker的结构(6-13)

    一.Docker的结构. Docker命令不清楚的时候可以在命令的最后加上--help Docker和虚拟机的区别? 虚拟机的实现原理是:先模拟出一套硬件,然后在这基础上跑一个操作系统,然后在这个操作 ...

  10. [ZJOI2010]数字计数 数位DP

    最近在写DP,今天把最近写的都放上来好了,,, 题意:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 首先询问的是一个区间,显然是要分别求出1 ~ r ,1 ...