题目大意:竞赛用自行车前轮有f个齿轮,后轮有r个齿轮,根据比率计算一个spread(传播率?)。
很直接的题,排序然后找商的最大值就好了,uhunt上标明level 4,我都不敢相信会这么简单,还一直在担心值重复的问题呢。
1 #include <cstdio> 2 #include <algorithm> 3 using namespace std; 4 5 int main() 6 { 7 #ifdef LOCAL 8 freopen("in", "r", stdin); 9 #endif 10 int f, r; 11 int front[12], rear[12]; 12 double ratio[110]; 13 while (scanf("%d", &f) && f) 14 { 15 scanf("%d", &r); 16 for (int i = 0; i < f; i++) 17 scanf("%d", &front[i]); 18 for (int i = 0; i < r; i++) 19 scanf("%d", &rear[i]); 20 int k = 0; 21 for (int i = 0; i < r; i++) 22 for (int j = 0; j < f; j++) 23 ratio[k++] = rear[i] * 1.0 / front[j]; 24 sort(ratio, ratio+k); 25 double lmax = 0; 26 for (int i = 1; i < k; i++) 27 { 28 double t = ratio[i] / ratio[i-1]; 29 if (t > lmax) lmax = t; 30 } 31 printf("%.2lf ", lmax); 32 } 33 return 0; 34 }