Description
話說當年語文考滿分的你認識標題第一個字嗎?
HPU有很多內湖,湖裏面放養了很多金魚(還有黑白天鵝?),每天都會有很多小夥伴在湖邊看金魚在水中嬉戲(黑白天鵝打架?)。
Ocean是一個善於思考的好孩子,今天他給你出了一道題目:假設湖中一共有$N$條金魚,現在Ocean隨機挑出兩條金魚,問這兩條金魚顏色不同的概率?
爲了降低題目難度,Ocean認爲金魚只會有$6$種不同的顏色,即$1,2,3,4,5,6。$
PS:在挑出來第二條魚之前,Ocean是不會將第一條魚放入湖中的。
Input
第一行輸入一個整數$T$,代表有$T$組測試數據。
每組數據佔兩行,第一行輸入一個整數$N$代表上面提到的信息。
下面一行輸入$N$個整數$color_i$,代表第$i$條金魚的顏色。
當$color_i = 1$,代表第$i$條金魚的顏色爲$1$,其它依次類推。
注:$1 <= T <= 100,2 <= N <= 100,1 <= color_i <= 6。$
每組數據佔兩行,第一行輸入一個整數$N$代表上面提到的信息。
下面一行輸入$N$個整數$color_i$,代表第$i$條金魚的顏色。
當$color_i = 1$,代表第$i$條金魚的顏色爲$1$,其它依次類推。
注:$1 <= T <= 100,2 <= N <= 100,1 <= color_i <= 6。$
Output
對每組測試數據,輸出一個浮點數代表最後的結果,要求保留兩位小數。
Sample Input
2 4 1 1 2 2 2 2 2
Sample Output
0.67 0.00
// 題意:明顯的數學題,直接求兩條魚相同的概率,拿1減一下就是答案。
//代碼如下:
#include <stdio.h>
int main()
{
int t;
scanf ("%d",&t);
while (t--)
{
int n;
scanf ("%d",&n);
int a,b,c,d,e,f;
a = b = c = d = e = f = 0;
for (int i = 0 ; i < n ; i++)
{
int m;
scanf ("%d",&m);
if (m == 1)
a++;
if (m == 2)
b++;
if (m == 3)
c++;
if (m == 4)
d++;
if (m == 5)
e++;
if (m == 6)
f++;
}
double ans1,ans2,ans3,ans4,ans5,ans6,ans;
ans1 = ans2 = ans3 = ans4 = ans5 = ans6 = ans = 0;
if (a >= 2)
{
ans1 = (( double)a/( double)n) *(( double)(a-1)/( double)(n-1));
}
if (b >= 2)
{
ans2 =( ( double)b/ ( double)n) * (( double)(b-1)/( double)(n-1));
}
if (c >= 2)
{
ans3 = ( ( double)c/ ( double)n) * (( double)(c-1)/( double)(n-1));
}
if (d >= 2)
{
ans4 = (( double)d/( double)n) *( ( double)(d-1)/ ( double)(n-1));
}
if (e >= 2)
{
ans5 = ( ( double)e/ ( double)n) * (( double)(e-1)/( double)(n-1));
}
if (f >= 2)
{
ans6 = (( double)f/( double)n) *( ( double)(f-1)/ ( double)(n-1));
}
ans = ans1 + ans2 + ans3 + ans4 + ans5 + ans6;
printf ("%.2lf\n",1-ans);
}
return 0;
}