Editorial for Conversión de tiempo


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: leosangue

Para este problema, definimos X como la máxima cantidad de horas dados N segundos. A N le restamos 3600X (3600 es la cantidad de segundos que hay en una hora). Después, definimos Y como la máxima cantidad de minutos dados N segundos. A N le restamos 60Y (60 es la cantidad de segundos que hay en un minuto). Lo que nos queda de N son los segundos restantes, por lo que nuestro resultado final sería X Y N.

Código de ejemplo

#include<iostream>
using namespace std;

int main(){
    int n; cin>>n; //1
    int X = n/3600; //2
    n = n - 3600*X; //3
    int Y = n / 60; //4
    n = n - 60*Y; //5
    //6
    cout<<X<<" "<<Y<<" "<<n; //7

    return 0;
}

Explicación del código

  1. Definimos y recibimos la cantidad de segundos: N.
  2. Definimos X como la cantidad de horas completas que hay dados N segundos. Como estamos manipulando enteros, en Cpp, si el resultado no es entero, se tomá el valor entero hacia abajo más cercano. Ej. 10/3=3, 99/10=9, 5/2=2
  3. A N le restamos la cantidad de segundos que abarcan X horas completas (3600 segundos por hora)(N será una cantidad entré 0 y 3599)
  4. Definimos Y como la cantidad de minutos completos hay dados los segundos que no completaron una hora.
  5. A N le restamos la cantidad de segundos que abarcan Y minutos completos (60 segundos por minuto)(N será una cantidad entre 0 y 59)
  6. Ya tenemos cuántas horas, minutos que no completaron una hora, y segundos que no completaron un minuto, dados N segundos.
  7. Imprimimos los valores separados por un espacio.

Comments

There are no comments at the moment.