附上下面一段代码
样例都过不了,提交居然AC
#include<cstdio>
#define N 100010
double a[N]={0},f[N][230]={0};
int main(){
int n,k;
double sum=0;
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%lf",&a[i]);
sum+=a[i];
}
f[1][0]=(1-a[1]);
for(int i=2;i<=n;i++){
f[i][0]=f[i-1][0]*(1-a[i]);
}
f[1][1]=a[1];
for(int i=2;i<=k;i++){
f[i][i]=f[i-1][i-1]*a[i];
}
for(int i=2;i<=n;i++){
for(int j=1;j<=k;j++){
if(i<j){
f[i][j]=f[i-1][j-1]*a[i]+f[i-1][j]*(1-a[i]);
}
}
}
printf("%.4lf\n",sum);
printf("%.4lf\n",f[n][k]);
}
#define N 100010
double a[N]={0},f[N][230]={0};
int main(){
int n,k;
double sum=0;
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%lf",&a[i]);
sum+=a[i];
}
f[1][0]=(1-a[1]);
for(int i=2;i<=n;i++){
f[i][0]=f[i-1][0]*(1-a[i]);
}
f[1][1]=a[1];
for(int i=2;i<=k;i++){
f[i][i]=f[i-1][i-1]*a[i];
}
for(int i=2;i<=n;i++){
for(int j=1;j<=k;j++){
if(i<j){
f[i][j]=f[i-1][j-1]*a[i]+f[i-1][j]*(1-a[i]);
}
}
}
printf("%.4lf\n",sum);
printf("%.4lf\n",f[n][k]);
}
全部评论
(0) 回帖