#P13456. [GCJ 2008 Qualification] Fly Swatter

    ID: 13267 远端评测题 6000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>数学计算几何2008Special JudgeGoogle Code Jam

[GCJ 2008 Qualification] Fly Swatter

Description

你用网球拍打中一只苍蝇的概率是多少?

首先,忽略球拍的手柄。假设球拍是一个完美的圆环,外半径为 RR,厚度为 tt(因此圆环的内半径为 RtR - t)。

圆环上覆盖有水平和垂直的球线。每根球线都是半径为 rr 的圆柱体。每根球线都是圆环上的一条弦(即连接圆上两点的直线)。相邻两根球线之间有长度为 gg 的空隙。所有球线关于圆心对称,即有一对球线的中心正好经过圆环的中心。

苍蝇是一个半径为 ff 的球体。假设球拍沿垂直于圆环平面的直线运动。还假设苍蝇的中心在球拍外半径以内,并且在该半径范围内的任意位置出现的概率相等。只要苍蝇与球拍(包括圆环或球线)有任何重叠,就算打中了苍蝇。

Input Format

第一行包含一个整数 NN,表示测试用例的数量。

接下来的 NN 行,每行包含 ffRRttrrgg 五个数,数值之间用一个空格隔开。所有数值均保留 6 位小数。

Output Format

NN 行,每行格式为 "Case #kk: PP",其中 kk 表示测试用例编号,PP 表示苍蝇被球拍打中的概率。

只要答案的相对或绝对误差不超过 10610^{-6},即视为正确。

5
0.250000 1.000000 0.100000 0.010000 0.500000
0.250000 1.000000 0.100000 0.010000 0.900000
0.000010 10000.000000 0.000010 0.000010 1000.000000
0.400000 10000.000000 0.000010 0.000010 700.000000
1.000000 100.000000 1.000000 1.000000 10.000000
Case #1: 1.000000
Case #2: 0.910015
Case #3: 0.000000
Case #4: 0.002371
Case #5: 0.573972

Hint

  • ffRRttrrgg 均为正数,且不超过 10000。
  • t<Rt < R
  • f<Rf < R
  • r<Rr < R

小数据集(5 分,测试集 1 - 可见)

  • 1N301 \leq N \leq 30
  • 球线总数最多为 60(即每个方向最多 30 根)。

大数据集(20 分,测试集 2 - 隐藏)

  • 1N1001 \leq N \leq 100
  • 球线总数最多为 2000(即每个方向最多 1000 根)。

由 ChatGPT 4.1 翻译