【HPU-2016校賽-G】確率


點擊打開鏈接


確率
Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu

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。$ 

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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章