直线
在平面直角坐标系中,两点可以确定一条直线。
如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。
给定平面上2 × 3 个整点{(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z},
即横坐标是0 到1 (包含0 和1) 之间的整数、纵坐标是0 到2 (包含0 和2) 之间的整数的点。
这些点一共确定了11 条不同的直线。
给定平面上20 × 21 个整点{(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z},
即横坐标是0 到19 (包含0 和19) 之间的整数、纵坐标是0 到20 (包含0 和20) 之间的整数的点。
请问这些点一共确定了多少条不同的直线。
注意:不能用b = y-k*x去算截距会丢失精度,将方程y=kx+b转换为b=y-((y2-y1)/(x2-x1))*x,再将y上下乘x2-x1可以转换成不损精度的表达式,且用set不允许插入相同值,最后+20+21为将两点中有一点相同的情况给补充上,即所有横线和竖线
#include<bits/stdc++.h>
using namespace std;
int main()
{
set< pair<double,double> > les;
for(double x1=0;x1<20;++x1){
for(double y1=0;y1<21;++y1){
for(double x2=0;x2<20;++x2