POJ 3300 Tour de France
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 3704
Accepted: 1759
Description
A racing bicycle is driven by a chain connecting two sprockets. Sprockets are grouped into two clusters: the front cluster (typically consisting of 2 or 3 sprockets) and the rear cluster (typically consisting of between 5 and 10 sprockets). At any time the chain connects one of the front sprockets to one of the rear sprockets. The drive ratio -- the ratio of the angular velocity of the pedals to that of the wheels -- is n : m where n is the number of teeth on the rear sprocket and m is the number of teeth on the front sprocket. Two drive ratios d1 < d2 are adjacent if there is no other drive ratio d1 < d3 < d2. The spread between a pair of drive ratios d1 < d2 is their quotient: d2 ⁄ d1. You are to compute the maximum spread between two adjacent drive ratios achieved by a particular pair of front and rear clusters.
Input
Input consists of several test cases, followed by a line containing 0. Each test case is specified by the following input:
You may assume that no cluster has more than 10 sprockets and that no gear has fewer than 10 or more than 100 teeth.
Output
For each test case, output the maximum spread rounded to two decimal places.
Sample Input
2 4
40 50
12 14 16 19
0
Sample Output
1.19
Source
Waterloo Local Contest, 2007.7.14
산악 자전거는 앞바퀴와 뒷바퀴가 있고 앞바퀴는 fn종의 구동 기어가 있으며 뒷바퀴는 rn종의 구동 기어가 있다. 각 구동 기어에 체인과 결합된 기어 수가 다르다. 앞바퀴는 fj(j=1,2,...fn)이고 뒷바퀴는ri(i=1,2...rn)이다. 현재 앞뒤 두 기어가 결합하여 작업하는 기어의 비례는 dk=ri/fj이다. 그리고 인접한 d1
참고 사항:
1) 멀티케이스 문제입니다. 0으로 끝내고 초기화에 주의하십시오.
2) 결과는 두 개의 소수점을 유지합니다.
코드(1AC):
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
using namespace std;
int rear[15];
int front[15];
float dratio[300];
int main(void){
int f, r;
int i, j, k;
float max, tmp;
while (scanf("%d", &f), f != 0){
memset(dratio, 0, sizeof(dratio));
memset(rear, 0, sizeof(rear));
memset(front, 0, sizeof(front));
scanf("%d", &r);
for (i = 0; i < f; i++){
scanf("%d", &front[i]);
}
for (i = k = 0, max = -1; i < r; i++){
scanf("%d", &rear[i]);
for (j = 0; j < f; j++){
dratio[k++] = (float)rear[i] / (float)front[j];
}
}
sort(dratio, dratio+k);
max = -1;
for (i = 0; i < k - 1 ; i++){
tmp = dratio[i + 1] / dratio[i];
if (tmp > max){
max = tmp;
}
}
printf("%.2f
", max);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ 3300 Tour de FranceAt any time the chain connects one of the front sprockets to one of the rear sprockets. The drive ratio -- the ratio of ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.