[蓝桥杯 2023 国 B] 数三角
-
两点之间距离公式(勾股定理)
double dis(int a,int b) { return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]))*1.00; } -
枚举所有点判断距离是否相等 注意:在此之前要先判断是否构成三角形(三角形两边之和大于第三边)
#include<bits/stdc++.h>
using namespace std;
int n,ans=0,x[2005],y[2005];
double dis(int a,int b)
{
return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]))*1.00;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>x[i]>>y[i];
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
for(int k=1;k<j;k++)
if(dis(i,j)+dis(i,k)>dis(j,k)&&dis(i,k)+dis(j,k)>dis(i,j)&&dis(i,j)+dis(j,k)>dis(i,k))
if(dis(i,j)==dis(j,k)||dis(i,k)==dis(j,k)||dis(i,j)==dis(i,k))
ans++;
cout<<ans;
return 0;
}