#P3300. Tour de France

Tour de France

题目描述

赛车的动力传动由连接前后两个齿轮组的链条驱动。前齿轮组通常包含2233个齿轮,后齿轮组包含551010个齿轮。链条始终连接一个前齿轮和一个后齿轮。传动比(踏板角速度与车轮角速度之比)定义为d=nmd = \frac{n}{m},其中nn为后齿轮齿数,mm为前齿轮齿数。若两个传动比d1<d2d_1 < d_2之间不存在其他传动比d3d_3(即d1<d3<d2d_1 < d_3 < d_2),则称它们为相邻传动比。相邻传动比的跨度定义为d2d1\frac{d_2}{d_1}。你的任务是计算给定前后齿轮组的所有可能传动比中,最大相邻跨度

输入格式

每个测试用例包含:
前齿轮数量ff,后齿轮数量rr
ff个整数,表示前齿轮的齿数。
rr个整数,表示后齿轮的齿数。
输入以00结束。
数据范围:1f31 \leq f \leq 35r105 \leq r \leq 10,齿轮齿数10m,n10010 \leq m,n \leq 100

输出格式

对每个测试用例,输出最大相邻跨度,保留两位小数。

样例输入 1

2 4
40 50
12 14 16 19
0

样例输出 1

1.19

样例解释

11. 计算所有传动比
前齿轮齿数:40,5040, 50;后齿轮齿数:12,14,16,1912, 14, 16, 19
可能的传动比:
1250=0.24\frac{12}{50}=0.241450=0.28\frac{14}{50}=0.281650=0.32\frac{16}{50}=0.321950=0.38\frac{19}{50}=0.38
1240=0.30\frac{12}{40}=0.301440=0.35\frac{14}{40}=0.351640=0.40\frac{16}{40}=0.401940=0.475\frac{19}{40}=0.475
22. 排序并求相邻跨度
排序后:0.24,0.28,0.30,0.32,0.35,0.38,0.40,0.4750.24, 0.28, 0.30, 0.32, 0.35, 0.38, 0.40, 0.475
最大相邻跨度:0.300.281.19\frac{0.30}{0.28} \approx 1.19

关键思路

11. 生成所有传动比:遍历前后齿轮组合,计算后齿轮齿数前齿轮齿数\frac{\text{后齿轮齿数}}{\text{前齿轮齿数}}
22. 排序传动比:确保严格递增。
33. 计算最大相邻跨度:遍历排序后的列表,求max(di+1di)\max\left(\frac{d_{i+1}}{d_i}\right)

来源

Waterloo Local Contest, 2007.7.142007.7.14