【hpu oj 1022: 985的因子对难题 [数学]】

来源:互联网 发布:免费网络硬盘哪个好 编辑:程序博客网 时间:2024/06/06 00:10

点击打开链接




AC代码:

#include<stdio.h>  #include<string.h>  #include<math.h>  #define N 1000000+19  int num[N],fac[N];  int n,i,j,a;  int main()  {      int T;      scanf("%d",&T);      while(T--)      {          memset(num,0,sizeof(num));          memset(fac,0,sizeof(fac));          scanf("%d",&n);          int max=0;          for(i=0;i<n;i++)          {              scanf("%d",&a);              if(a>max)                  max=a;              num[a]++;          }          for(i=1;i<=max;i++)          {              if(num[i]==0)                  continue;              for(j=i+i;j<=max;j+=i)                  fac[j]+=num[i];          }          long long sum=0;          for(i=1;i<=max;i++)          {              if(num[i])              {                  if(num[i]>1)                      sum+=num[i]*(num[i]-1)/2;                  sum+=fac[i]*num[i];              }          }          printf("%lld\n",sum);      }      return 0;  } 



原创粉丝点击