Code

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 877    Accepted Submission(s): 348

Problem Description
WLD
likes playing with codes.One day he is writing a function.Howerver,his
computer breaks down because the function is too powerful.He is very
sad.Can you help him?

The function:

int calc
{
  
  int res=0;
  
  for(int i=1;i<=n;i++)
    
    for(int j=1;j<=n;j++)
    
    {
      
      res+=gcd(a[i],a[j])*(gcd(a[i],a[j])-1);
      
      res%=10007;
    
    }
  
  return res;

}
 
Input
There are Multiple Cases.(At MOST 10)

For each case:

The first line contains an integer N(1≤N≤10000).

The next line contains N integers a1,a2,...,aN(1≤ai≤10000).
 
Output
For each case:

Print an integer,denoting what the function returns.
 
Sample Input
5
1 3 4 2 4
 Sample Output
64
思路:莫比乌斯反演;
F[x]表示sum(gcd(a,b))(x|gcd(a,b)),那么我们需要求f(x)(gcd(a,b)==x),那么根据莫比乌斯反演可得
f(x) = sum(u(y)F(y/x))(x|y);然后答案就是sum(f(x)*(x*(x-1)));所以我们先线性筛出莫比乌斯函数,然后再求每个数
的因数,复杂度(n*log(n))
  1. 1 #include <iostream>
  2. 2 #include<stdio.h>
  3. 3 #include<algorithm>
  4. 4 #include<string.h>
  5. 5 #include<queue>
  6. 6 #include<set>
  7. 7 #include<math.h>
  8. 8 #include<vector>
  9. 9 typedef long long LL;
  10. 10 using namespace std;
  11. 11 bool prime[10005];
  12. 12 int ak[10005];
  13. 13 LL mul[10005];
  14. 14 LL cnt[10005];
  15. 15 vector<int>vec[10005];
  16. 16 int mod = 10007;
  17. 17 int main(void)
  18. 18 {
  19. 19 int i,j;
  20. 20 int cn = 0;
  21. 21 mul[1] = 1;
  22. 22 for(i = 2; i <= 10000; i++)
  23. 23 {
  24. 24 if(!prime[i])
  25. 25 {
  26. 26 ak[cn++] = i;
  27. 27 mul[i] = -1;
  28. 28 }
  29. 29 for(j = 0; j < cn&&(LL)ak[j]*i<=10000; j++)
  30. 30 {
  31. 31 if(i%ak[j])
  32. 32 {
  33. 33 prime[i*ak[j]] = true;
  34. 34 mul[i*ak[j]] = -mul[i];
  35. 35 }
  36. 36 else
  37. 37 {
  38. 38 prime[i*ak[j]] = true;
  39. 39 mul[i*ak[j]] = 0;
  40. 40 break;
  41. 41 }
  42. 42 }
  43. 43 }
  44. 44 int n;
  45. 45 for(i = 1;i <= 10000;i++)
  46. 46 {
  47. 47 for(j = 1;j <= sqrt(i);j++)
  48. 48 {
  49. 49 if(i%j==0)
  50. 50 {
  51. 51 vec[i].push_back(j);
  52. 52 if(i/j!=j)
  53. 53 vec[i].push_back(i/j);
  54. 54 }
  55. 55 }
  56. 56 }
  57. 57 while(scanf("%d",&n)!=EOF)
  58. 58 { int maxx = 0;
  59. 59 memset(cnt,0,sizeof(cnt));
  60. 60 int i,j;
  61. 61 for(i = 0; i < n; i++)
  62. 62 {scanf("%d",&ak[i]);maxx = max(maxx,ak[i]);}
  63. 63 for(i = 0; i < n; i++)
  64. 64 {
  65. 65 for(j = 0;j < vec[ak[i]].size();j++)
  66. 66 { int x = vec[ak[i]][j];
  67. 67 cnt[x]++;
  68. 68 }
  69. 69 }//printf("%lld\n",cnt[1]);
  70. 70 LL sum = 0;
  71. 71 for(i = 1;i <= maxx;i++)
  72. 72 {
  73. 73 for(j = i;j <= maxx;j+=i)
  74. 74 {
  75. 75 sum = sum + mul[j/i]*(cnt[j]*cnt[j])*(i*(i-1)%mod)%mod;
  76. 76 sum%=mod;
  77. 77 }
  78. 78 }
  79. 79 printf("%lld\n",(sum%mod+mod)%mod);
  80. 80 }
  81. 81 return 0;
  82. 82 }

Code(hdu5212)的更多相关文章

  1. Visual Studio Code 代理设置

    Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...

  2. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  3. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  4. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

    刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...

  5. 在Visual Studio Code中配置GO开发环境

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  6. 代码的坏味道(14)——重复代码(Duplicate Code)

    坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...

  7. http status code

    属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...

  8. Visual Studio Code——Angular2 Hello World 之 2.0

    最近看到一篇用Visual Studio Code开发Angular2的文章,也是一篇入门教程,地址为:使用Visual Studio Code開發Angular 2專案.这里按部就班的做了一遍,感觉 ...

  9. WebStorm 2016 最新版激活(activation code方式)

    WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...

随机推荐

  1. LearnPython_week4

    1.装饰器2.生成器3.迭代器4.内置方法5.可序列化6.项目规范化 1.装饰器 # -*- coding:utf-8 -*- # Author:Wong Du ### 原代码 def home(): ...

  2. C#序号

    OnRowCreated="gridViewCorrection_RowCreated" <asp:BoundField HeaderText="序号" ...

  3. idea 启动debug的时候throw new ClassNotFoundException(name)

    idea 启动debug的时候throw new ClassNotFoundException(name) 启动debug就跳转到此界面 解决办法 这个方法只是忽略了抛异常的点,并没有真正解决问题.后 ...

  4. ASP.NET Core中使用固定窗口限流

    算法原理 固定窗口算法又称计数器算法,是一种简单的限流算法.在单位时间内设定一个阈值和一个计数值,每收到一个请求则计数值加一,如果计数值超过阈值则触发限流,如果达不到则请求正常处理,进入下一个单位时间 ...

  5. Spark(二十一)【SparkSQL读取Kudu,写入Kafka】

    目录 SparkSQL读取Kudu,写出到Kafka 1. pom.xml 依赖 2.将KafkaProducer利用lazy val的方式进行包装, 创建KafkaSink 3.利用广播变量,将Ka ...

  6. 【JAVA开发】浅析双亲委派机制

    双亲委派机制存在的意义 双亲委派只是一种说法,个人觉得叫单亲委派更合适,因为向上传递的父类只有一个,估计只是翻译过来的,形成的一种习惯,大家可以当做单亲委派 四种加载器都是用于类的加载,只是加载的对象 ...

  7. 从源码看Thread&ThreadLocal&ThreadLocalMap的关系与原理

    1.三者的之间的关系 ThreadLocalMap是Thread类的成员变量threadLocals,一个线程拥有一个ThreadLocalMap,一个ThreadLocalMap可以有多个Threa ...

  8. Oracle中如何自定义类型

    一:Oracle中的类型有很多种,主要可以分为以下几类:1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer ...

  9. oracle(数据文件)

    --创建数据文件 create tablespace--创建表空间同时创建数据文件 create temporary tablespace --创建临时表空间的同时创建临时数据文件 alter tab ...

  10. Mysql多字段模糊查询

    MySQL同一字段多值模糊查询 一. 同一字段多值模糊查询,使用多个or进行链接,效率不高,但没有更好的解决方案.(有看到CHARINDEX 关键字,可查询结果并不是模糊,举个栗子 例如SELECT ...