Pagini recente » Cod sursa (job #1537012) | Cod sursa (job #2463761) | Cod sursa (job #2463298) | Cod sursa (job #809878) | Cod sursa (job #2518593)
#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;
}