钝角三角形
题目描述
n条边,任选3条边,能组成钝角三角形的概率(选的边不同就认为是不同的三角形)?
输入格式
第一个是一个整数T(1≤T≤1000),表示样例的个数。
每个样例占2行,第一行是一个整数n,3≤n≤100,表示边数。 第二行是n个整数ai,1≤ai≤100,表示边的长度。
输出格式
依次每行输出一个样例的结果,如果概率为0或者1,输出0或者1;否则输出一个真分数a/b。
样例输入
3 4 1 2 3 4 3 1 2 3 3 2 2 3
样例输出
1/4 0 1
#include<stdio.h>
int f(int a,int b)
{
while(a%b!=0)
{
int c=b;
b=a%b;
a=c;
}
return b;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int a[101],i,j=0,k,cnt=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
k=a[j+1];
a[j+1]=a[j];
a[j]=k;
}
}
}
for(i=0;i<=n-3;i++)
{
for(j=i+1;j<=n-2;j++)
{
for(k=j+1;k<=n-1;k++)
{
if(a[i]+a[j]>a[k])
{
if(a[i]*a[i]+a[j]*a[j]<a[k]*a[k])
{
cnt++;
}
}
}
}
}
cnt=cnt*6;
int m=n*(n-1)*(n-2);
if(cnt==0) printf("0\n");
else if(cnt==m) printf("1\n");
else
{
int c=cnt,d=m;
printf("%d/%d\n",cnt/f(c,d),m/f(c,d));
}
}
}
和之前那个锐角三角形很相似