目录
1. 题目:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。
给定平面上 2x3个整点(x,y)0 ≤x< 2,0≤y<3,r€Z,y€Z,即橫坐标是0到1(包含 0和 1)之间的整数、纵坐标是0到2(包含0和 2)之间的整数的点。这些点一共确定了 11 条不同的直线。
给定平面上 20 x21 个整点(æ,y)0 ≤x<20,0≤y<21,x€Z,y€Z,即横坐标是0到 19(包含 0和 19)之间的整数、纵坐标是0到 20(包含 0 和 20)之 间的整数的点。
请问这些点一共确定了多少条不同的直线。
2. 我的代码:
import os
import sys
# 暴力求解
points = [[x, y] for x in range(0, 20) for y in range(0, 21)]
set_result = set()
for p_1 in range(len(points)):
for p_2 in range(p_1 + 1, len(points)):
point_1 = points[p_1]
point_2 = points[p_2]
if point_1[0] - point_2[0] == 0:
continue
k = (point_1[1] - point_2[1]) / (point_1[0] - point_2[0])
y0 = (point_2[0] * point_1[1] - point_1[0] * point_2[1]) / (point_2[0] - point_1[0])
set_result.add((k, y0))
print(len(set_result) + 20)