《程序设计基础二》类的设计部分练习题目:1432--1446,运算符重载部分练习题目:1447--1461

Problem 1987. -- 农场阳光

1987: 农场阳光

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 0  Accepted: 0
[Submit][Status][Web Board]

Description

  X星球十分特殊,它的自转速度与公转速度相同,所以阳光总是以固定的角度照射。

  最近,X星球为发展星际旅游业,把空间位置出租给Y国游客来晒太阳。每个租位是漂浮在空中的圆盘形彩云(圆盘与地面平行)。当然,这会遮挡住部分阳光,被遮挡的土地植物无法生长。

  本题的任务是计算某个农场宜于作物生长的土地面积有多大。

Input

  多组测试数据。每组数据的格式如下。

   第一行包含两个整数a, b,表示某农场的长和宽分别是ab,此时,该农场的范围是由坐标(0, 0, 0), (a, 0, 0), (a, b, 0), (0, b, 0)围成的矩形区域。

  第二行包含一个实数g,表示阳光照射的角度。简单起见,我们假设阳光光线是垂直于农场的宽的,此时正好和农场的长的夹角是g度,此时,空间中的一点 (x, y, z)在地面的投影点应该是(x + z * ctg(g), y, 0),其中ctg(g)表示g度对应的余切值。

  第三行包含一个非负整数n,表示空中租位个数。

  接下来 n 行,描述每个租位。其中第i行包含4个整数xi, yi, zi, ri,表示第i个租位彩云的圆心在(xi, yi, zi)位置,圆半径为ri

Output

  每组数据要求输出一个实数,四舍五入保留两位有效数字,表示农场里能长庄稼的土地的面积。

Sample Input

10 10
90.0
1
5 5 10 5
8 8
90.0
1
4 4 10 5
20 10
45.0
2
5 0 5 5
8 6 14 6

Sample Output

21.46
1.81
130.15

[Submit][Status][Web Board]