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 e tornar o outro carro um retardatário.
#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.
#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);
}
Eu solicitei ao ChatGPT para tentar resolver essa questão e ver se ele irei pela solução que utiliza a estrutura de repetição ou a solução proposta seria a com somente o cálculo utilizado na minha segunda solução (até mesmo queria conferir se ele iria propor um outro cálculo). Confira meu teste no vídeo a seguir.