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)