xtu oj 锐角三角形
锐角三角形
题目描述
n条边,任选3条边,能组成多少个锐角三角形(选的边不同就认为是不同的三角形)?
输入
第一个是一个整数T(1≤T≤1000),表示样例的个数。
每个样例占2行,第一行是一个整数n,3≤n≤100,表示边数。 第二行是n个整数ai,1≤ai≤10000,表示边的长度。
输出
依次每行输出一个样例的结果。
样例输入
2 4 1 1 1 1 3 1 2 3
样例输出
4 0
AC代码
#include<stdio.h>
#include<math.h>
#define N 10005
//判断是否能构成锐角三角形
int Sol(int a,int b,int c){int flag=0;int fz=a*a+b*b-c*c;int fm=2*a*b;if(fz>0&&fz<fm)flag=1;return flag;
}
int main()
{int T;scanf("%d",&T);int a[N]={};while(T--){int n,i,j,k;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}int cnt=0;for(i=0;i<n-2;i++){for(j=i+1;j<n-1;j++){for(k=j+1;k<n;k++){if(Sol(a[i],a[j],a[k])&&Sol(a[i],a[k],a[j])&&Sol(a[k],a[j],a[i])){cnt++;}}}}printf("%d\n",cnt);}}
利用余弦定理解题即可