23 lines
867 B
C++
23 lines
867 B
C++
// lanqiao 1449 直线
|
|
#include<bits/stdc++.h>
|
|
using namespace std;
|
|
int main(){
|
|
set<pair<double, double>> s; // 使用set对{k, b}数据对去重
|
|
// 枚举第一个坐标点
|
|
for(int x1 = 0; x1 < 20; x1++){
|
|
for(int y1 = 0; y1 <21; y1++){
|
|
// 枚举第二个坐标点
|
|
for(int x2 = x1+1; x2 < 20; x2++){
|
|
for(int y2 = 0; y2 < 21; y2++){
|
|
double k = (double)(y2-y1)/(x2-x1);
|
|
// double b = (double)(y1 - ((y2-y1)/(x2-x1)) * x1);
|
|
// 上面这个式子先算除法再算乘法,存在精度误差,最好先通分一下
|
|
double b = (double)(x2*y1 - x1*y2)/(x2-x1);
|
|
s.insert({k, b});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cout << s.size() + 20 << endl; // +20代表与x轴垂直的直线
|
|
return 0;
|
|
} |