现在给出一个骰子60006000次投掷的结果,要你利用这些结果得到骰子66个面各自出现的概率
输入
输入为60006000个整型数,整型值在11到66之间
输出
输出为66个浮点数,对应从11到66各个面出现的概率,要求误差小于0.0010.001
样例
标准输入复制文本 |
1 1 1 1 2 1 1 1 2 1 1............1 2 1 1 1 2 |
标准输出复制文本 |
0.800000 0.200000 0.00000 0.00000 0.00000 0.00000 |
#include <bits/stdc++.h>
using namespace std;
int main() {//6001防止爆栈,sum1指数字1出现的次数,sum11指的是数字1出现的概率
double a[6001],sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0,sum11=0,sum22=0,sum33=0,sum44=0,sum55=0,sum66=0;
for(int i=1; i<=6000; i++) {
cin>>a[i];
}
//计数
for(int i=1; i<=6000; i++) {
if(a[i]==1) {
sum1++;
} else if(a[i]==2) {
sum2++;
} else if(a[i]==3) {
sum3++;
} else if(a[i]==4) {
sum4++;
} else if(a[i]==5) {
sum5++;
} else if(a[i]==6) {
sum6++;
}
}
//计算概率
sum11=sum1/(6000.0);
sum22=sum2/(6000.0);
sum33=sum3/(6000.0);
sum44=sum4/(6000.0);
sum55=sum5/(6000.0);
sum66=sum6/(6000.0);
printf("%.6lf %.6lf %.6lf %.6lf %.6lf %.6lf",sum11,sum22,sum33,sum44,sum55,sum66);
return 0;
}