1. 程式人生 > 其它 >HDUOJ---4503 湫湫系列故事——植樹節

HDUOJ---4503 湫湫系列故事——植樹節

湫湫系列故事——植樹節

Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 958    Accepted Submission(s): 565

Problem Description

  今天是一年一度的植樹節,騰訊幼兒園要求每個老師在班裡選出幾個小朋友一起去野外種植小樹苗,根據學校的整體安排,湫湫老師的班裡要選出3個小朋友。  已知湫湫的班裡共有n個孩子,每個孩子有Bi個朋友(i從1到n),且朋友關係是相互的,如果a小朋友和b小朋友是朋友,那麼b小朋友和a小朋友也一定是好朋友。為了選擇的公平性,湫湫老師會隨機抽取3個小朋友出來(每個人被抽到的概率相同),但是她很希望這3個小朋友之間的關係完全相同,湫湫老師想請你幫她算算抽到的3個小朋友正好關係相同的概率是多少?   PS. 關係相同就是指要麼3個人互相是好朋友,要麼3個人互相都不是好朋友。

Input

輸入資料第一行是一個整數T(1<=T<=1000),表示輸入資料的組數;每組資料的第一行是一正整數n表示孩子的總數(2<n<=1000),第二行有n個數Bi (i從1到n),分別代表每個小朋友的朋友的個數。

Output

對於每組資料,請輸出抽到的3個小朋友關係相同的概率,結果保留3位小數。

Sample Input

1 5 3 3 3 3 4

Sample Output

0.400

Source

2013騰訊程式設計馬拉松初賽第〇場(3月20日)

程式碼:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define maxn 1005
 4 int main()
 5 {
 6     int tt,n,tem,i;
 7      __int64 res=0 ;
 8     scanf("%d",&tt);
 9     while(tt--)
10     {
11         res=0;
12        scanf("%d",&n);
13        for(i=0;i<n;i++)
14        {
15         scanf("%d",&tem);
16          res+=tem*(n-tem-1) ;
17        }
18         res/=2;
19       __int64 tot=(n*(n-1)*(n-2))/6 ;   /* <結果為取數的總數> */
20        printf("%.3lfn",1.0*(tot-res)/tot);
21     }
22     return 0;
23 }