给定n个点,问它们两两构成的直线中,斜率的不同值有几种。。。
n<=200。。。
大水题,只要注意斜率不存在的情况就好了。
#include<bits/stdc++.h>
#define inf 1e20
#define eps 1e-8
#define N 200
using namespace std;
int n,tot,ans;
int x[N+5],y[N+5];
double f[N*N+5];
int main()
{
freopen("in.txt","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(x[i]==x[j])f[++tot]=inf;
else f[++tot]=(double)(y[i]-y[j])/(x[i]-x[j]);
sort(f+1,f+tot+1);
for(int i=1;i<=tot;i++)if(fabs(f[i]-f[i-1])>eps)ans++;
cout<<ans;
return 0;
}