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
该题主要是要定义double类型的变量,
#include<stdio.h>
int main()
{
int t;
int color;
scanf("%d",&t);
while(t--)
{
double ans=0;
double n;
double a[110]={0};
scanf("%lf",&n);
for(int i = 1; i <= n;i++)
{
scanf("%d",&color);
if(color==1)
a[1]+=1;
if(color==2)
a[2]+=1;
if(color==3)
a[3]+=1;
if(color==4)
a[4]+=1;
if(color==5)
a[5]+=1;
if(color==6)
a[6]+=1;
}
for(int i = 1; i <= n; i++)
{
if(a[i]>1)
{
double l1 =a[i]/n;
double l2 =(a[i]-1)/(n-1);
ans+=l1*l2;//计算两次都取到同一个鱼的概率,前提是该种类的鱼至少要有两个//
}
}
printf("%.2lf\n",1.00-ans);
}
return 0;
}
愿你一生清澈明朗,做你愿做之事,爱你原爱之人!