Coin Toss (poj3440)

Coin Toss (poj3440)

问题描述
有一个有名的园游会中有这样的一个游戏,将一个硬币投掷到一个被一些正方形方格分割的桌子上。游戏的奖励取决于你投掷的硬币覆盖的方格数,覆盖的方格越多,奖励越高。
如图所示为一种投掷了5枚硬币的情形,图中的1号硬币覆盖1个方格;2号硬币覆盖了2个方格;3号硬币覆盖了3个方格;4号方格覆盖了4个方格;5号硬币覆盖了2个方格。注意:硬币时可以跨越桌子的边界(图中的硬币5)。定义硬币覆盖一个方格指的是硬币与方格相交的面积为正,只与某方格边界相切的情况不被认为覆盖了该方格。你可以假定你投掷的硬币一定能够平躺再桌面上,你可以使你的硬币的圆心等概率地落在桌上(包括桌子的边界)。
硬币覆盖特定数目方格的概率取决于方格的边长,硬币的大小,方格的数目。现在请你写一个程序你根据给顶的数据计算硬币覆盖特定数目方格的概率。
输入格式
输入文件第一行包括一个整数,表示测试数据的组数。
对于每一组数据,包括4个整数,m,n,t,c,表示桌上有m行n列方格,每一个方格的边长为t,直径为c。1≤m,n≤5 000,1≤c<t≤1 000.
输入格式
对于每一组输出,首先输出测试数据的数组,接着分4行输出硬币覆盖1,2,3,4个方格的概率,保留4为小数,格式参见样例。
每两组数据之间输出一个空行,最后一组数据之后请不要输出多余的空行。
输入样例
3
5 5 10 3
7 4 25 20
10 10 10 4
输出样例
Case 1:
Probability of covering 1 tile = 57.7600%
Probability of covering 2 tiles = 36.4800%
Probability of covering 3 tiles = 1.2361%
Probability of covering 4 tiles = 4.5239%

Case 2:
Probability of covering 1 tile = 12.5714%
Probability of covering 2 tiles = 46.2857%
Probability of covering 3 tiles = 8.8293%
Probability of covering 4 tiles = 32.3135%

Case 3:
Probability of covering 1 tile = 40.9600%
Probability of covering 2 tiles = 46.0800%
Probability of covering 3 tiles = 2.7812%
Probability of covering 4 tiles = 10.1788%