// lanqiao 1449 直线 #include using namespace std; int main(){ set> 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; }