筛法。

统计所有 [数] 的所有 [倍数] 的 [数] 的个数,即 i 的所有倍数 i, 2i, 3i, 4i...个数为 dp[i],

则所有 倍数两两结合共有 dp[i] * dp[i] 个。

此处覆盖 dp[i] = dp[i] * dp[i]。

对于新的 dp[i] 数组,从后往前逆推,设已完成的子问题 d[j] 为 j 作为 [最大公约数] 的所有数对的个数。

因为 dp[i] 是所有以 i 为 [公约数] 的数对个数,dp[i] 去掉 [ i 是公约数] 但 [ i 不是最大公约数] 的那些数对的个数(即所有的 [ j 是 i 的倍数 ] 的d[j])则得到 d[i](代码中相当于 d[i] 覆盖 dp[i])。

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef long long LL;
int dp[];
int num[];
int sum[];
int n;
int main()
{
while(scanf("%d", &n) != EOF)
{
int maxnum = , ans = ;
memset(sum, , sizeof(sum));
for(int i = ; i < n; i ++)
{
scanf("%d", &num[i]);
sum[num[i]] ++;
maxnum = maxnum < num[i] ? num[i] : maxnum;
}
memset(dp, , sizeof(dp));
for(int i = ; i <= maxnum; i ++)
{ for(int j = i; j <= maxnum; j += i)
{
dp[i] += sum[j];
}
dp[i] *= dp[i];
}
for(int i = maxnum; i >= ; i --)
{
for(int j = i + i; j <= maxnum; j += i)
dp[i] -= dp[j];
ans = (ans + (LL)i * (i - ) * dp[i]) % ;
}
printf("%d\n", ans);
}
return ;
}

HDU 5212 Code的更多相关文章

  1. HDU 5212 Code【莫比乌斯反演】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5212 题意: 给定序列,1≤i,j≤n,求gcd(a[i],a[j])∗(gcd(a[i],a[j] ...

  2. hdu.5212.Code(莫比乌斯反演 && 埃氏筛)

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  3. hdu 5212 Code 筛法或者莫比乌斯

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Des ...

  4. HDU 5212 Code (莫比乌斯反演)

    题意:给定上一个数组,求 析: 其中,f(d)表示的是gcd==d的个数,然后用莫比乌斯反演即可求得,len[i]表示能整队 i 的个数,可以线性筛选得到, 代码如下: #pragma comment ...

  5. hdu 5212 : Code【莫比乌斯】

    题目链接 题给代码可以转化为下面的公式 然后用F[n]记录公约数为n的(a[i],a[j])对数,用f[n]记录最大公约数为n的(a[i],a[j])对数 之后枚举最大公约数d 至于求F[n],可以先 ...

  6. HDU 3461 Code Lock(并查集+二分求幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3461 A lock you use has a code system to be opened in ...

  7. hdu 5212 反向容斥或者莫比

    http://acm.hdu.edu.cn/showproblem.php?pid=5212 题意:忽略.. 题解:把题目转化为求每个gcd的贡献.(http://www.cnblogs.com/z1 ...

  8. HDU 6590 Code (判断凸包相交)

    2019 杭电多校 1 1013 题目链接:HDU 6590 比赛链接:2019 Multi-University Training Contest 1 Problem Description Aft ...

  9. hdu 3461 Code Lock

    http://acm.hdu.edu.cn/showproblem.php?pid=3461 并差集和幂取模 这道题主要是求不可操作区间. #include <cstdio> #inclu ...

随机推荐

  1. Google Chrome浏览器调试入门————转载只为自己查看方便

    Google Chrome浏览器调试 作为Web开发人员,我为什么喜欢Google Chrome浏览器 [原文地址:http://www.cnblogs.com/QLeelulu/archive/20 ...

  2. 大数据之ETL设计详解

    ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...

  3. emu1

    第一题 一个很奇怪的贪心.先排序一遍,再扫描一遍,能加入尽量加入,不能加入就一定不能加入..由于每次都在可能的最早时间加入一个数可以保证差最小?反正差不多这样了. O(n log n) #includ ...

  4. Android中自定义Activity和Dialog的位置大小背景和透明度等demo

    1.自定义Activity显示样式 先在res/values下建colors.xml文件,写入: <?xml version="1.0" encoding="utf ...

  5. ubuntu安装到选择位置时闪退

    转自:http://tieba.baidu.com/p/3020839207

  6. Java for LeetCode 172 Factorial Trailing Zeroes

    Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...

  7. java将白色背景图片转换成无色

    package com.cxf.dao; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.Buffer ...

  8. UVALive 7261 Xiongnu's Land (扫描线)

    Wei Qing (died 106 BC) was a military general of the Western Han dynasty whose campaigns against the ...

  9. POJ 3904 Sky Code (容斥原理)

    B - Sky Code Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit ...

  10. nginx打开目录浏览

    server { listen 80; server_name localhost; index index.html index.htm index.php; autoindex on; #开启ng ...