Cod sursa(job #2013090)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 20 august 2017 15:00:32
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
#define MAXN 26
void bkt(int cap,int size);
double lgput(double a,int b)
{
	if(b==0)
	{
		return 1;
	}
	if(b==1)
	{
		return a;
	}
	double r=1;
	while(b>1)
	{
		if(b%2==0)
		{
			a*=a;
		}
		else
		{
			r*=a;
			a*=a;
		}
		b/=2;
	}
	return r*a;
}
FILE*fin,*fout;
double prob[MAXN];
int v[MAXN];
int fact;
int N,K;
double sum=0;
int main()
{
	fin=fopen("dezastru.in","r");
	fout=fopen("dezastru.out","w");
	fscanf(fin,"%d%d",&N,&K);
	for(int i=1;i<=N;i++)
	{
		fscanf(fin,"%lf",&prob[i]);
	}
	bkt(1,1);
	for(int i=K+1;i<=N;i++)
	{
		sum/=i;
	}
	fprintf(fout,"%lf",sum);
	fclose(fin);
	fclose(fout);
	return 0;
}
void bkt(int cap,int size)
{
	if(size==K+1)
	{
		double prod=1;
		for(int i=1;i<=K;i++)
		{
			prod*=prob[v[i]];
		}
		sum+=prod;
		return;
	}
	for(int i=cap;i<=N;i++)
	{
		v[size]=i;
		bkt(i+1,size+1);
	}
}