题目描述
赛车的动力传动由连接前后两个齿轮组的链条驱动。前齿轮组通常包含2或3个齿轮,后齿轮组包含5到10个齿轮。链条始终连接一个前齿轮和一个后齿轮。传动比(踏板角速度与车轮角速度之比)定义为d=mn,其中n为后齿轮齿数,m为前齿轮齿数。若两个传动比d1<d2之间不存在其他传动比d3(即d1<d3<d2),则称它们为相邻传动比。相邻传动比的跨度定义为d1d2。你的任务是计算给定前后齿轮组的所有可能传动比中,最大相邻跨度。
输入格式
每个测试用例包含:
前齿轮数量f,后齿轮数量r。
f个整数,表示前齿轮的齿数。
r个整数,表示后齿轮的齿数。
输入以0结束。
数据范围:1≤f≤3,5≤r≤10,齿轮齿数10≤m,n≤100。
输出格式
对每个测试用例,输出最大相邻跨度,保留两位小数。
样例输入 1
2 4
40 50
12 14 16 19
0
样例输出 1
1.19
样例解释
1. 计算所有传动比:
前齿轮齿数:40,50;后齿轮齿数:12,14,16,19。
可能的传动比:
5012=0.24,5014=0.28,5016=0.32,5019=0.38,
4012=0.30,4014=0.35,4016=0.40,4019=0.475。
2. 排序并求相邻跨度:
排序后:0.24,0.28,0.30,0.32,0.35,0.38,0.40,0.475。
最大相邻跨度:0.280.30≈1.19。
关键思路
1. 生成所有传动比:遍历前后齿轮组合,计算前齿轮齿数后齿轮齿数。
2. 排序传动比:确保严格递增。
3. 计算最大相邻跨度:遍历排序后的列表,求max(didi+1)。
来源
Waterloo Local Contest, 2007.7.14