Cod sursa(job #1038801)

Utilizator romykPrehari Romica romyk Data 21 noiembrie 2013 23:21:41
Problema Dezastru Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#include<stdbool.h>
int n,k,x[26];
long long fac;
float dez[26],rez;
void print (int i)
{
    int l;
    float dd;
    dd=dez[x[1]];
    for (l = 2; l <= i; l++)
        dd*=dez[x[l]];

      rez+=dd;
}
int good(int j,int i)
{
    int l;
    for(l=1;l<i;l++)
     if(x[l]==j)
        return 0;
     return 1;

}
void Ribbon (int i)
{
    int j;
    for (j = 1; j <= n; j++)
    {
        if(good(j,i))
        {
            x[i] = j;
            if(i==k)
            {
                print(i);

            }
            else Ribbon(i+1);
        }
    }
}
int main()
{
    int i;
    freopen("combinari.in","r",stdin);
    freopen("combinari.out","w",stdout);
    scanf("%i %i",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%f",&dez[i]);



    Ribbon(1);
    fac=1;
    for(i=1;i<=n;i++)
        fac*=i;

printf("%.6f",(float)rez/fac);
    return 0;
}