排序后简单判断,数据量不够强大(估计是故意的2333333)导致不用辗转相除法也能过?
#include <iostream>
#include <algorithm>
using namespace std;
bool judge(int a,int b)
{
int mini = min(a,b);
for(int i=2;i<=mini;i++)
{
if(a%i==0&&b%i==0)
{
return false;
}
}
return true;
}
int main(void)
{
int n;
scanf("%d",&n);
int a[1005];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int count = 0;
sort(a,a+n);
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(judge(a[j],a[i])==1)
{
count++;
}
}
}
printf("%d\n",count);
}
//可以使用辗转相除法优化