BUPT 2017 summer training (for 16) #1D

题意

找到n个数里面有多少对具有倍数关系。\(1 ≤ n ≤ 10^4,2 ≤ a_i ≤ 10^6\)

题解

枚举一个数,和它的倍数。

代码

#include <cstdio>
#include <cstring>
int n,t,b[1000001];
int main(){
    scanf("%d",&t);
    while(t--){
        memset(b,0,sizeof b);
        scanf("%d",&n);
        for(int i=1,a;i<=n;++i){
            scanf("%d",&a);
            ++b[a];
        }
        int ans=0;
        for(int i=2;i<=1000000;++i)if(b[i]){
            ans+=b[i]*(b[i]-1)/2;
            for(int j=i*2;j<=1000000;j+=i)
                ans+=b[i]*b[j];
        }
        printf("%d\n",ans);
    }
    return 0;
}

相关文章:

  • 2022-12-23
  • 2021-12-13
  • 2021-05-24
  • 2021-10-30
  • 2021-08-29
  • 2021-06-23
  • 2021-07-07
  • 2021-04-29
猜你喜欢
  • 2021-10-19
  • 2022-12-23
  • 2021-06-02
  • 2021-10-04
  • 2022-12-23
  • 2021-11-02
相关资源
相似解决方案