Cod sursa(job #370283)
| Utilizator | Data | 30 noiembrie 2009 18:34:18 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<fstream.h>
int n,k,t,u,x[40],i;
long double p,s,a[40],pp;
int main()
{
ifstream f("dezastru.in");
ofstream g("dezastru.out");
f>>n>>t;
for(i=1;i<=n;i++)f>>a[i];
p=1;
for(i=1;i<=t;i++)p*=a[i];
pp=p;
k++;
s=0;
while(k)
{
x[k]++;
if(k==t)
{
u=0;
while(x[k-u]==n-u)u++;
k-=u;
if(k)
{
p/=a[x[k]];
p*=a[x[k]+1];
}
else p=pp;
s+=p;
}
else
{
k++;
x[k]=x[k-1];
}
}
for(i=t+1;i<=n;i++)s*=(float(n+1)/i-1);
g<<s;
g.close();
return 0;
}