hdu 5212 Code
2016-06-01 22:32
344 查看
求∑i=1n∑j=1ngcd(ai,aj)×(gcd(ai,aj)−1)(mod10007)
1≤n,ai≤10000
几乎是反演模板题
枚举gcd算贡献就好
具体见代码
1≤n,ai≤10000
几乎是反演模板题
枚举gcd算贡献就好
具体见代码
#include<cstdio> #include<vector> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define LL long long const int maxn = 11234; const int mod = 10007; vector<int> fac[maxn]; LL mu[maxn]; void init(){ memset(mu,0,sizeof(mu)); mu[1] = 1; for(int i=1;i<maxn;i++){ for(int j=i;j<maxn;j+=i){ fac[j].push_back(i); if(j!=i) mu[j] -= mu[i]; } } } LL cnt[maxn]; int main(){ init(); int n; while(~scanf("%d",&n)){ memset(cnt,0,sizeof(cnt)); int x; while(n--){ scanf("%d",&x); for(vector<int>::iterator it = fac[x].begin();it!=fac[x].end();it++){ cnt[*it]++; } } LL ret = 0; for(int i=1;i<maxn;i++){ LL tim = 0; for(int j=i;j<maxn;j+=i){ (tim += mu[j/i]*(cnt[j]*cnt[j])) %= mod; } ret += tim * i % mod * (i-1); ret %= mod; } printf("%I64d\n",ret); } return 0; }
相关文章推荐
- AndroidStudio主题设置
- Shortest Path
- 求满足条件 n=a!+b!+c! 的所有三位数
- Android6.0 运行时权限
- android AsyncTask介绍
- [置顶] 谈谈我对攻读计算机研究生的看法(转)
- 有序广播
- 百度2016实习生面经(三面)
- 多线程程序设计
- [原创]java WEB学习笔记35:java WEB 中关于绝对路径 和相对路径问题
- codevs 1907 方格取数 3
- POJ1201 Intervals
- linux中文件描述符fd和文件指针flip的理解
- CoreAnimation动画
- 客户端与服务端通信原理
- 二叉树面试题
- Objective-C 中 +load 与 +initialize
- jdk源码分析之ConcurrentHashMap
- ACdream-1030-Matching
- solr初认识