hdu 5212 Code

原创 2016年06月01日 22:32:46

i=1nj=1ngcd(ai,aj)×(gcd(ai,aj)1)(mod10007)

1n,ai10000

几乎是反演模板题

枚举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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 5381 The sum of gcd 离线处理+线段树

题意:给一组序列,多次询问,每次询问f(l,r)=∑ri=l∑rj=igcd(ai,ai+1....aj)f(l,r)=\sum_{i=l}^{r}\sum_{j=i}^{r}gcd(a_i,a_{i...
  • CSDNCJava
  • CSDNCJava
  • 2015年08月24日 10:56
  • 416

hdu 5212 Code (容斥)

题意: int calc {      int res=0;      for(int i=1;i          for(int j=1;j          {              res...
  • My_ACM_Dream
  • My_ACM_Dream
  • 2015年04月26日 21:52
  • 551

HDU5212 Code

题意:输出那个程序的结果 这题其实就是求任意一个数与每一个数的gcd×(gcd-1),然后全部加起来。。 把每个数值对应的个数记下来,然后从最大的数开始,找这个数的倍数,如果gcd是x那个构成这个...
  • eeeaaaaa
  • eeeaaaaa
  • 2015年04月27日 12:43
  • 245

HDU 5212

来自我的新博客HDU 5212Description:      ~~~~~~ 给定一个数列{aN}\{a_N\} ,然后求 Ans=∑i=1N∑j=1Ngcd(ai,aj)∗(gcd(ai,aj...
  • qq_21995319
  • qq_21995319
  • 2015年09月15日 21:39
  • 417

hdu5212 Code 莫比乌斯

Problem Description WLD likes playing with codes.One day he is writing a function.Howerver,his co...
  • u013044116
  • u013044116
  • 2015年10月22日 21:53
  • 278

hdu 5212(容斥原理)

Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi...
  • u013268685
  • u013268685
  • 2015年04月27日 01:43
  • 944

HDU 5212 Code【莫比乌斯反演】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5212题意:给定序列,1≤i,j≤n1 \le i,j \le n,求gcd(a[i],a[j])∗(g...
  • Yukizzz
  • Yukizzz
  • 2016年05月30日 23:05
  • 652

HDU 5212 Code(容斥)

题意: 输入n个数, 求这n个数的n^2个两两组合的最大公约数x,x(x-1)之和 。 换个思路, 我们如果求出了最大公约数为x的对数cnt, 那么答案就增加x(x-1)cnt^2 那么怎么求以x为最...
  • weizhuwyzc000
  • weizhuwyzc000
  • 2015年12月12日 15:09
  • 670

hdu 5212 Code

Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub...
  • qq_24451605
  • qq_24451605
  • 2015年06月07日 10:26
  • 271

hdu 5212 code

题目传送门 法一:观察calc函数,其本质就是求sigma(x*(x-1)),x=gcd(a[i],a[j])。然后发现a[i]的范围不大,因此x的范围也不大。 于是可以考虑数据范围内每个x对答案...
  • u014679804
  • u014679804
  • 2015年05月06日 22:37
  • 207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 5212 Code
举报原因:
原因补充:

(最多只允许输入30个字)