A21234. 几何计数
填空题
较难
知识点
题目描述
几何计数
题目描述
你在坐标纸上标记了 n 个互不相同的点。
现在你想知道:从这些点中任选三个,有多少种选择方式能构成一个真正的三角形?
所谓真正的三角形,是指三个顶点不共线,即面积大于零的三角形。请计算这个数目。
输入
第一行,一个整数 n,表示点的数量。
接下来 n 行,每行包含两个整数 xi 和 yi ,表示第 i 个点的坐标。
输出
输出一个整数,表示能够构成三角形的三点组合的数量。
输入样例1
3
0 0
2 0
0 -3输出样例1
1输入样例2
20
224 433
987654321 987654321
2 0
6 4
314159265 358979323
0 0
-123456789 123456789
-1000000000 1000000000
124 233
9 -6
-4 0
9 5
-7 3
333333333 -333333333
-9 -1
7 -10
-1 5
324 633
1000000000 -1000000000
20 0输出样例2
1124数据范围
3≤N≤300,-109≤Xi、Yi≤109,所有点的坐标互不相同。
参考答案
#include<iostream>
int main()
{
int n;
std::cin >> n;
int x[300];
int y[300];
for (int i = 0; i < n; ++i)
{
std::cin >> x[i] >> y[i];
}
int c = 0;
for (int i = 0; i < n; ++i)
for (int j = i+1; j < n; ++j)
for (int k = j+1; k < n; ++k)
{
long long x1 = x[j] - x[i];
long long x2 = x[k] - x[i];
long long y1 = y[j] - y[i];
long long y2 = y[k] - y[i];
if (y1 * x2 != y2 * x1)
c++;
}
std::cout << c << "\n";
}
上一题
下一题