Pagini recente » Cod sursa (job #2164859) | Cod sursa (job #825576) | Cod sursa (job #1299001) | Cod sursa (job #648806) | Cod sursa (job #1147999)
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int x,p;
int st[100];
float ve[25];
long long Factorial(int x) {
return (x == 1 ? x : x * Factorial(x - 1));
}
int esol(int k)
{
if(k == p)
return 1;
return 0;
}
int valid(int k)
{
for(int i = 1; i < k; i++)
{
if(st[k] == st[i])
return 0;
}
return 1;
}
float Sum;
void afisare(int k)
{
for(int i = 1; i < k; i++)
{
if(st[i] != st[i + 1])
{
float result;
result = ve[st[i] - 1] * ve[st[i + 1] - 1];
result = result / Factorial(x);
//cout << ve[st[i] - 1] << " * " << ve[st[i+1] - 1] << " = " << result << "\n";
Sum += result;
//cout << st[i] << st[i+1] << "\n";
}
}
}
void bk(int k)
{
for(int i = 1; i <= x; i++)
{
st[k] = i;
if(esol(k))
{
afisare(k);
}
else
{
bk(k+1);
}
}
}
void read()
{
fin >> x >> p;
for(int i = 0; i < x; i++){
fin >> ve[i];
//cout << ve[i] << " ";
}
//cout << "\n";
}
int main()
{
read();
bk(1);
fout << setprecision(6) << Sum;
//cout << Factorial(15);
return 0;
}