Programação Competitiva

Maratona [2012] – Volta

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

EntradaSaída
1 102
4 82
5 74
6875 710931

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.

Sair da versão mobile