标签:acm ref sub 表示 prim main names 判断 time
Time Limit: 3 Sec Memory Limit: 128 Mb Submitted: 281 Solved: 69
如果a,b的最大公约数是1,说明a,b是一对互素的数,给定你n个数字,希望你找出互素的数的对数
第一行输入一个正整数T,表示数据组数
每组数据第一行输入一个正整数n,表示数字的个数(n<=10000)
接下来一行输入n个正整数,每个数字大小不超过1000。
输出互素的数的对数
1 4 10 9 6 35
3
1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <algorithm> 5 #include <cstring> 6 #include <math.h> 7 8 using namespace std; 9 int a,num[1005]; 10 int gug(int x,int y) 11 { 12 if(x%y==0)return y; 13 return gug(y,x%y); 14 } 15 int main() 16 { 17 int t,n; 18 scanf("%d",&t); 19 while(t--) 20 { 21 for(int i=0; i<1005; ++i) 22 { 23 num[i]=0; 24 } 25 scanf("%d",&n); 26 for(int i=0; i<n; ++i) 27 { 28 scanf("%d",&a); 29 num[a]++; 30 } 31 int ans=0; 32 if(num[1]>0)ans+=num[1]*(num[1]-1)/2; 33 for(int i=2; i<1000; ++i) 34 { 35 ans+=num[1]*num[i]; 36 for(int j=i+1; j<=1000; ++j) 37 { 38 if((num[j]!=0)&&(gug(j,i)==1)) 39 ans+=num[i]*num[j]; 40 } 41 } 42 ans+=num[1]*num[1000]; 43 printf("%d\n",ans); 44 } 45 46 return 0; 47 }
标签:acm ref sub 表示 prim main names 判断 time
原文地址:http://www.cnblogs.com/52why/p/7461463.html