hpu1190--確率(概率)
2017-08-22 10:53
267 查看
题目描述
话说当年语文考满分的你认识标题第一个字吗?HPU有很多内湖,湖里面放养了很多金鱼(还有黑白天鹅?),每天都会有很多小伙伴在湖边看金鱼在水中嬉戏(黑白天鹅打架?)。
Ocean是一个善于思考的好孩子,今天他给你出了一道题目:
假设湖中一共有NN条金鱼,现在Ocean随机挑出两条金鱼,问这两条金鱼颜色不同的概率?
为了降低题目难度,Ocean认为金鱼只会有66种不同的颜色,即1,2,3,4,5,6。1,2,3,4,5,6。
PS:在挑出来第二条鱼之前,Ocean是不会将第一条鱼放入湖中的。
输入
第一行输入一个整数TT,代表有TT组测试数据。每组数据占两行,第一行输入一个整数NN代表上面提到的信息。
下面一行输入NN个整数coloricolori,代表第ii条金鱼的颜色。
当colori=1colori=1,代表第ii条金鱼的颜色为11,其它依次类推。
注:1<=T<=100,2<=N<=100,1<=colori<=6。1<=T<=100,2<=N<=100,1<=colori<=6。
输出
对每组测试数据,输出一个浮点数代表最后的结果,要求保留两位小数。
样例输入
2 4 1 1 2 2 2 2 2
样例输出
0.67 0.00
来源
CZY解题思路:用1减去相同颜色的金鱼。
#include<cstdio> #include<cstring> int fac(int x) { if(x==1) return 1; return x*fac(x-1); } int main() { int t,n,a[105],b[6]; scanf("%d",&t); while(t--) { memset(b,0,sizeof(b)); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]==1) b[0]++; if(a[i]==2) b[1]++; if(a[i]==3) b[2]++; if(a[i]==4) b[3]++; if(a[i]==5) b[4]++; if(a[i]==6) b[5]++; } int sum=0; for(int i=0;i<6;i++) { if(b[i]>=2) //同种颜色,鱼的个数大于等于2,从中取2条计算概率,然后求和 sum+=(b[i]*(b[i]-1))/2; } double m=n*(n-1)/2; //总鱼中随机取2条的概率 printf("%.2lf\n",1-(double)(sum)/m); } return 0; }
相关文章推荐
- hpu 1190: 確率
- hpuoj【1190】確率【数学】
- hpu 【1190】確率(组合数学)
- HPU 1190 確率
- (概率)hpu 1154: 两堆硬币 [数学]
- 【HPU-2016校赛-G】確率
- hpuoj 1190: 確率
- HDU 5002(概率题目)
- BZOJ3811 玛里苟斯(线性基+概率期望)
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
- 概率dp的边界处理 POJ 2096
- HDU 1203概率dp
- CodeForces 540D--Bad Luck Island(概率DP)
- LightOJ 1031 - Easy Game(概率)
- HDU 5236 Article [概率DP]
- hpuoj 1248: HH的军训 (容斥原理)
- 【Codeforces Round 333 (Div 2)E】【期望DP概率做法 树状数组转前缀和】Kleofáš and the n-thlon n场比赛m个人获得总名次的期望
- 概率论复习 – 基础概率分布
- UVa 11021 Tribles(概率DP)
- HDU 3853 LOOPS [简单概率DP]