SDUT 趣味循环赛第二场 玄黄的三角形题解
来源:互联网 发布:淘宝爆款平台 编辑:程序博客网 时间:2024/04/28 05:33
题解
设三角形的边长为 a , b , c ,且a >= b >= c ,若 a * a < b * b + c * c 那么这个三角形就是锐角三角形
标程
#include <stdio.h>#define ll long longll a[110], b[110];int check(int i, int j, int k){ ll x = (a[i] - a[j]) * (a[i] - a[j]) + (b[i] - b[j]) * (b[i] - b[j]); ll y = (a[i] - a[k]) * (a[i] - a[k]) + (b[i] - b[k]) * (b[i] - b[k]); ll z = (a[k] - a[j]) * (a[k] - a[j]) + (b[k] - b[j]) * (b[k] - b[j]); if (x > y) { ll t = x; x = y; y = t; } if (x > z) { ll t = x; x = z; z = t; } if (y > z) { ll t = y; y = z; z = t; } if (z < x + y) return 1; return 0;}int main(){ int n; while (~scanf("%d", &n)) { for (int i = 0; i < n; i++) { scanf("%lld%lld", &a[i], &b[i]); } ll ans = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { if (check(i, j, k)) { ans++; } } } } printf("%lld\n", ans); }}
阅读全文