GRAVITATION, n.
“The tendency of all bodies to approach one another with a strength
proportion to the quantity of matter they contain – the quantity of
matter they contain being ascertained by the strength of their tendency
to approach one another. This is a lovely and edifying illustration of
how science, having made A the proof of B, makes B the proof of A.”
Ambrose Bierce
You have a population of k Tribbles. This particular species of Tribbles live for exactly one day and then die. Just before death, a single Tribble has the probability Pi of giving birth to i more Tribbles. What is the probability that after m generations, every Tribble will be dead?
Input
The first line of input gives the number of cases, N. N test cases follow. Each one starts with a line
containing n (1 ≤ n ≤ 1000), k (0 ≤ k ≤ 1000) and m (0 ≤ m ≤ 1000). The next n lines will give the probabilities P0, P1, . . . , Pn−1.
Output
For each test case, output one line containing ‘Case #x:’ followed by the answer, correct up to an absolute or relative error of 10^−6.
Sample Input
4
3 1 1
0.33
0.34
0.33
3 1 2
0.33
0.34
0.33
3 1 2
0.5
0.0
0.5
4 2 2
0.5
0.0
0.0
0.5
Sample Output
Case #1: 0.3300000
Case #2: 0.4781370
Case #3: 0.6250000
Case #4: 0.3164062
#include <stdio.h>
double f[10001], p[10001];
double qw(double a, int b)
{
double ans = 1;
while (b)
{
if (b & 1)
{
ans = ans * a;
}
a = a * a;
b >>= 1;
}
return ans;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt", "r", stdin);
#endif
int i, j, n, k, m, N;
scanf("%d", &N);
for (int kcase = 1; kcase < N + 1; kcase++)
{
scanf("%d %d %d", &n, &k, &m);
for (i = 0; i < n; i++)
{
scanf("%lf", &p[i]);
}
for (i = 1; i < m + 1; i++)
{
f[i] = p[0];
if (i > 1)
{
for (j = 1; j < n; j++)
{
f[i] += p[j] * qw(f[i - 1], j);
}
}
}
printf("Case #%d: %.7lf\n",kcase, qw(f[m], k));
}
return 0;
}