#P1596. Gears on a Board
Gears on a Board
本题没有可用的提交语言。
题目翻译:棋盘上的齿轮
题目描述
一家名为“Gears R Us”的工程公司需要一个程序来评估齿轮在棋盘上的运行情况。棋盘是一个二维安装平面,齿轮具有两层齿(靠近棋盘的内半径和远离棋盘的外半径)。齿轮绕其圆心旋转,并通过接触相邻齿轮的内半径或外半径以相等的线速度相互作用。角速度对于同一齿轮的内半径和外半径是相同的。
棋盘是一个300×300的正方形网格,每个安装孔间距为1厘米。棋盘的左下角坐标为(x=1, y=1),右上角为(x=300, y=300)。齿轮只能安装在网格点上,其内外半径均为1到100的整数。电机齿轮是唯一的初始动力源(从棋盘后方驱动),其旋转规则与其他齿轮一致。以下示意图展示了一个示例配置:
在上述示例中,电机位于坐标(20, 100),内外半径均为5厘米,逆时针旋转(转速-300 RPM)。电机接触齿轮1的内半径,齿轮1的内半径接触齿轮2和齿轮3的内半径,齿轮3的外半径接触齿轮4的外半径,齿轮4的内半径接触齿轮5的内半径。通过计算可知:
- 齿轮1顺时针旋转,转速83.33 RPM;
- 齿轮2逆时针旋转,转速187.50 RPM;
- 齿轮3逆时针旋转,转速150.00 RPM;
- 齿轮4顺时针旋转,转速187.50 RPM;
- 齿轮5逆时针旋转,转速22.50 RPM。
尽管此示例未包含异常情况,但“Gears R Us”需要程序检测两种错误条件:
- 齿轮重叠错误:两个或多个齿轮的内半径或外半径发生重叠(即中心距小于两半径之和)。
- 旋转冲突错误:任何齿轮被两个或多个不同的速度驱动(即同一齿轮通过不同接触路径计算出的转速或方向不一致)。
此外,若存在齿轮转速为0(闲置),需输出警告信息“Warning -- Idle Gear”。
输入格式
输入包含多个测试用例,每个用例格式如下:
- 第一行:6个整数,依次为:
- 电机的坐标(x, y)(1 ≤ x, y ≤ 300);
- 电机的内半径(ir)和外半径(or)(1 ≤ ir, or ≤ 100);
- 电机的转速(AV),单位为RPM(绝对值1 ≤ |AV| ≤ 1000,负数表示逆时针旋转,正数表示顺时针旋转);
- 齿轮数量NG(1 ≤ NG ≤ 20,不含电机)。
- 接下来NG行:每行4个整数,依次为第i个齿轮(i从1到NG)的坐标(x, y)、内半径(ir)和外半径(or)(1 ≤ ir, or ≤ 100)。
输出格式
对于每个测试用例,输出格式如下:
无错误且无警告时:
- 第1行:
Simulation #X
,其中X为测试用例编号(从1开始),左对齐,起始于第13列。 - 第2行至NG+1行:每行描述一个齿轮,格式为:
- 齿轮编号:右对齐,占1-2列;
- 冒号:位于第3列;
- 旋转方向:L(逆时针)或R(顺时针),位于第5列;
- 转速:保留两位小数,左对齐,起始于第7列。
- 若存在转速为0的齿轮,该行替换为:
i: Warning -- Idle Gear
(i为齿轮编号,起始于第5列)。
发生错误时:
- 第1行:
Simulation #X
。 - 第2行:根据错误类型输出以下内容之一(左对齐,起始于第1列):
Error -- Overlapping Gears
(齿轮重叠错误,优先检测);Error -- Conflicting Gear Rotation
(旋转冲突错误)。
其他要求:
- 每个测试用例的输出后必须包含一个空行。
完整输入输出示例
输入数据1:
20 100 5 5 -300 5
43 100 18 10
43 74 8 4
71 100 10 15
94 100 3 8
122 100 25 6
20 100 5 5 -300 5
43 100 18 10
43 74 8 4
71 100 10 10
89 100 3 8
105 100 25 6
20 100 5 5 -300 5
43 100 18 10
43 74 8 4
71 100 10 10
89 100 3 8
125 100 25 6
输出数据1:
Simulation #1
1: R 83.33
2: L 187.50
3: L 150.00
4: R 281.25
5: L 33.75
Simulation #2
Error -- Overlapping Gears
Simulation #3
1: R 83.33
2: L 187.50
3: L 150.00
4: R 187.50
5: Warning -- Idle Gear