题目链接:https://vjudge.net/problem/UVA-11426

题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n.

的确没有想到是欧拉函数,这怎么会想到欧拉函数呢?  又不是要我们求所有gcd为1的个数  那些gcd不为1的怎么办呢?  当时怎么就没想到呢  除过去不就变为1了吗  自己是真的菜。。。

还是要多做题,把思维开阔起来!!!

思路在代码中  直接看代码:

  1. /**
  2. 欧拉函数三个性质
  3. 是素数的话 欧拉函数值等于它本身-1
  4. 如果a是素数 b%a==0 则phi[b*a]=phi[b]*a
  5. 如果b%a!=0 则phi[b*a]=phi[b]*phi[a]
  6. */
  7. #include<iostream>
  8. #include<cstdio>
  9. using namespace std;
  10. typedef long long LL;
  11. const int maxn=4e6+;
  12. LL N;
  13. LL phi[maxn],vis[maxn],p[maxn];//欧拉函数值 是否是素数 存素数
  14. LL f[maxn],ans[maxn];
  15. void Init()//求欧拉函数值
  16. {
  17. phi[]=;
  18. int num=;
  19. for(int i=;i<maxn;i++)
  20. {
  21. if(!vis[i])//是素数
  22. {
  23. p[num++]=i;
  24. phi[i]=i-;//素数的欧拉函数值就等于它的值-1
  25. }
  26. for(int j=;j<num&&p[j]*i<maxn;j++)
  27. {
  28. vis[p[j]*i]=true;//肯定不是素数
  29. if(i%p[j]==)
  30. {
  31. phi[i*p[j]]=p[j]*phi[i];
  32. break;
  33. }
  34. else phi[i*p[j]]=phi[i]*phi[p[j]];
  35. }
  36. }
  37.  
  38. // for(int i=1;i<=10;i++) cout<<i<<":"<<phi[i]<<" ";
  39. return ;
  40. }
  41. /** 假设n等于4
  42. (1,2) (2,3) (3,4)
  43. (1,3) (2,4)
  44. (1,4)
  45.  
  46. 假设f[n]=(1,n)+(2,n)+···(n-1,n)
  47. 则 ans=f[2]+f[3]+···+f[n] 所以我们要求的就是f[n]
  48.  
  49. 假设 gcd(1,n) gcd(2,n) ··· gcd(n-1,n)中等于i的有si个
  50. 那么gcd(s1,n)=i gcd(s2,n)=i gcd(si,n)=i
  51. 则 gcd(s1/i,n/i)=1 gcd(s2/i,n/i)=1 gcd(si/i,n/i)=1
  52. 这岂不是转换成了 总个数phi[n/i]的情形了 所以f[n]=i*phi[n/i]
  53.  
  54. */
  55. void solve()//存f[n]
  56. {
  57. phi[]=;
  58. for(int i=;i<maxn;i++)//遍历i的值 同时得到f[n]的部分值
  59. {
  60. for(int j=i;j<maxn;j+=i)//遍历n的值
  61. {
  62. f[j]+=i*phi[j/i];
  63. }
  64. }
  65. for(int i=;i<maxn;i++) ans[i]=ans[i-]+f[i];
  66. return ;
  67. }
  68. int main()
  69. {
  70. Init();
  71. solve();
  72. //while(scanf("%lld",&N)!=EOF)
  73. while(cin>>N)
  74. {
  75. if(N==) break;
  76. cout<<ans[N]<<endl;
  77. //printf("%lld\n",ans[N]);
  78. }
  79. return ;
  80. }

GCD - Extreme(欧拉函数变形)的更多相关文章

  1. 【BZOJ】2818: Gcd(欧拉函数+质数)

    题目 传送门:QWQ 分析 仪仗队 呃,看到题后感觉很像上面的仪仗队. 仪仗队求的是$ gcd(a,b)=1 $ 本题求的是$ gcd(a,b)=m $ 其中m是质数 把 $ gcd(a,b)=1 $ ...

  2. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  3. uva11426 gcd、欧拉函数

    题意:给出N,求所有满足i<j<=N的gcd(i,j)之和 这题去年做过一次... 设f(n)=gcd(1,n)+gcd(2,n)+......+gcd(n-1,n),那么answer=S ...

  4. HDU 1695 GCD (欧拉函数+容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. HDU 1787 GCD Again(欧拉函数,水题)

    GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. hdu 4983 Goffi and GCD(欧拉函数)

    Problem Description Goffi is doing his math homework and he finds an equality on his text book: gcd( ...

  7. hdu 1695 GCD(欧拉函数+容斥)

    Problem Description Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD( ...

  8. HDU 1695 GCD(欧拉函数+容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:x位于区间[a, b],y位于区间[c, d],求满足GCD(x, y) = k的(x, ...

  9. GCD(欧拉函数)

    GCD Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

随机推荐

  1. Java web 中的HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  2. sql server 简单语句整合

    1.去重distinct , group by select distinct userid,username from 表名 select userid,username from 表名 group ...

  3. web端访问文件没有权限的问题

    背景 : ftp的PHP项目中的某些文件没有写入的权限..系统报注意错误!!! 原因 : 一般情况下,web端访问网站一般使用的是WWW权限(有限制的权限组)去访问, 但是我们编程开发的时候, 有可能 ...

  4. JS判断键盘是否按了F5刷新

    <script type="text/javascript"> $(function () { $(document).keydown(function (event) ...

  5. GraphQL 优势之处

    一次查询,搞定需求 举个例子,Book对象有bookTypeId,那我想看对应的bookTypeName,bookType对应的summary咋办? 如果你用RESTful Api ,免不了要定制接口 ...

  6. EFCore扩展Select方法(根据实体定制查询语句)

    EFCore扩展Select方法(根据实体定制查询语句)  通常用操作数据库的时候查询返回的字段是跟 我们的定义的实体是不一致的,所以往往针对UI或者接口层创建大量的Model, 而且需要手动对应字段 ...

  7. 微信小程序设计稿pt怎么转rpx

    什么是逻辑分辨率? 什么是物理分辨率? 什么是DPI?(Dots Per Inch) 最早的时候,这个单位是用来描述打印机的性能的,意思是每英寸能打多少个墨点,毫无疑问,DPI越高,打印出来的东西就会 ...

  8. FastDFS分布式⽂文件系统

    FastDFS分布式⽂文件系统  1. 什么是FastDFS FastDFS 是⽤用 c 语⾔言编写的⼀一款开源的分布式⽂文件系统.FastDFS 为互联⽹网量量身定制, 充分考虑了了冗余备份.负载均 ...

  9. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  10. 导出table为Excel

    1.HTML <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...