F Cidoai的平均数对
这道题怎么做?我使用暴力枚举但是超时,有什么办法优化吗?
#include <iostream>
using namespace std;
inline int gcd(int a,int b)//求两个数的最大公约数
{
int c=0;
while(1)
{
if(a%b==0)
{
return b;
}
c=a%b;
a=b;
b=c;
}
return 1;
}
inline int fixgcd(int a,int b,int c)//求三个数的最大公约数
{
return (a==1||b==1||c==1)?1:gcd(gcd(a,b),c);//如果三个数中有其中一个是1,最大公约数就返回1
}
unsigned long long n,sum;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)//求和
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(i*j==k*(i-j)&&fixgcd(i,j,k)==1)
{
sum++;
}
}
}
}
cout<<sum<<endl;
return 0;
}

