Maratona de programação 2014 – primeira fase – problema A
No automobilismo é bastante comum que o líder de uma prova, em determinado momento, ultrapasse o último colocado. O líder, neste momento, está uma volta a frente do último colocado, que se torna, assim, um retardatário.
Neste problema são dados os tempos que o piloto mais rápido e o piloto mais lento levam para completar uma volta, você deve determinar em que volta o último colocado se tornará um retardatário, ou seja, será ultrapassado pelo líder.
Você deve considerar que, inicialmente, eles estão lado a lado, na linha de partida do circuito, ambos no início da volta de número 1 (a primeira volta da corrida); e que uma nova volta se inicia sempre depois que o líder cruza a linha de partida.
Entrada
A única linha da entrada contém dois números inteiros X e Y (1 <= X < Y <= 10000), os tempos, em segundos, que o piloto mais rápido e o piloto mais lento levam para completar uma volta, respectivamente.
Saída
Seu programa deve produzir uma única linha, contendo um único inteiro: a volta em que o piloto mais lento se tornará um retardatário.
Exemplos
Entrada | Saída |
1 10 | 2 |
4 8 | 2 |
5 7 | 4 |
6875 7109 | 31 |
Resolução 1 – em C++
A primeira resolução mostrada é a mais natural para quem já conhece as estrutura de repetição. Nessa solução é buscado avaliar volta-a-volta se a diferença entre os carros já cresceu o suficiente para dar uma volta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> using namespace std; int main() { int x1, x2, faltando, volta = 1; cin >> x1 >> x2; while (faltando < x1){ faltando = volta * (x2-x1); volta++; } cout << volta; return 0; } |
Resolução 2 – em C
A segunda resolução é mais simples, apenas sendo necessário um simples cálculo para terminar a volta de interesse.
1 2 3 4 5 6 7 8 9 |
#include <stdio.h> int main(){ int x, y, volta, diferenca; scanf("%i%i", &x, &y); diferenca = y - x; volta = (y/diferenca) + 1; //resultado sempre inteiro printf("%i",volta); } |