ACM Regional Programming Contest 1997

Problem No. 1 - Coin Flips

File name: coin.cc

Problem Description

Imagine tossing a coin n times. The probablility that the coin lands "heads" all n times is much less, say, than the probability that the coin lands "heads" for half of the tosses and "tails" for half of the tosses. In this problem, you are to compute the probability that a sequence of n coin flips results in a particular number of heads. To make matters more interesting, the coins being flipped are not necessarily "fair," in the sense that they need not have the same probability of landing "heads" as "tails."

Input

The input file will contain a number of lines of input: in each there will first be an integer N representing the number of times a coin is to be tossed. The second integer H is the number of heads you would like to have appear within those coin tosses. The third number in each line is a floating-point value between 0.0 and 1.0 (inclusive) that indicates the chances that a coin lands heads on any particular toss. The number of coin tosses will be between 1 and 1,000,000.

Output

For each input line, your program should print lines of the following format:
  probability = x.xxxE-y
where each x is a decimal digit (the first is nonzero) and each y is a decimal integer with no leading zeroes or spaces. The number
  x.xxxE-y
should represent in scientific notation (x.xxx * 10^-y) the probability that a sequence of N coin tosses results in exactly H heads with a coin biased according to the specified probability of landing heads. The output exponent y will always fit into a signed integer.

Example Input

1 1 0.25
2 0 0.1
8271 8271 0.5

Example Output

probability = 2.500E-1
probability = 8.100E-1
probability = 1.517E-2490