Problema
Return the number of days in month of year in the Gregorian calendar. February has 29 days in a leap year: years divisible by 4, except those divisible by 100 unless also divisible by 400. A helper function is_leap(year) keeps the code tidy.
Implement days_in_month(year, month).
Input
year: The year. month: The month, 1 (January) to 12 (December).
Output
Return the number of days.
Restricciones
1 ≤ year ≤ 9,999; 1 ≤ month ≤ 12
Ejemplos
Entrada:
year = 2024
month = 2
Salida esperada:
expected = 29
Entrada:
long long year = 2024;
long long month = 2;
Salida esperada:
long long expected = 29;
Entrada:
long year = 2024;
long month = 2;
Salida esperada:
long expected = 29;
Explicación
2024 is divisible by 4 and not by 100, so it is a leap year: 29 days.
Entrada:
year = 1900
month = 2
Salida esperada:
expected = 28
Entrada:
long long year = 1900;
long long month = 2;
Salida esperada:
long long expected = 28;
Entrada:
long year = 1900;
long month = 2;
Salida esperada:
long expected = 28;
Explicación
1900 is divisible by 100 but not 400, so it is not a leap year: 28 days.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
La mayoría de los meses tienen una cantidad fija de días; febrero depende de si el año es bisiesto.
Pista 2
Usa una tabla pequeña con los días por mes y luego ajusta febrero con la regla de año bisiesto.
Pista 3
Ten cuidado con los años de siglo: ser divisible entre 100 no basta; también debe ser divisible entre 400.
Complejidad esperada
tiempo O(1), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.