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; }