Cod sursa(job #2518593)

Utilizator betybety bety bety Data 6 ianuarie 2020 00:00:03
Problema Dezastru Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n,k;
long double v[30];
long double sum=0.000000;
void calcul(string s)
{
    long double prod=1.000000;
    for(int i=1;i<=n;++i)
    if(s[i]=='1')
        prod*=v[i];
    sum+=prod;
}
void generare(string s,int pos,int nr)
{
    if(pos==n+1 and nr==k)
        calcul(s);
    else if(pos<=n and n-pos+1>=k-nr)
    {
        s[pos]='1';
        generare(s,pos+1,nr+1);
        s[pos]='0';
        generare(s,pos+1,nr);
    }
}
int main()
{
    string s="";
    in>>n>>k;
    for(int i=1;i<=n;++i)
        in>>v[i];
    for(int i=0;i<=n+2;++i)
        s+='0';
    generare(s,1,0);
    for(int i=1;i<=n-k;++i)
    {
        long double imn=i*1.000000;
        sum*=imn;
    }
    for(int i=k+1;i<=n;++i)
    {
        long double div=i*1.000000;
        sum/=div;
    }
    out<<setprecision(6)<<sum;
    return 0;
}