Fácil 0 resolvidos 0% de aceitação

Dias em um Mês

Retorne quantos dias tem um mês, incluindo anos bissextos.

O que você vai aprender

  • Associar meses à quantidade de dias
  • Reutilizar uma regra de ano bissexto
  • Dividir a lógica em funções pequenas

Problema

Ver original (inglês)

Retorne o número de dias no month do year no calendário gregoriano. Fevereiro tem 29 dias em anos bissextos: anos divisíveis por 4, exceto aqueles divisíveis por 100, a menos que também sejam divisíveis por 400. Uma função auxiliar is_leap(year) mantém o código organizado.

Implemente days_in_month(year, month).

Entrada

year: O ano. month: O mês, de 1 (janeiro) a 12 (dezembro).

Saída

Retorne o número de dias.

Restrições

1 ≤ year ≤ 9.999; 1 ≤ month ≤ 12

Exemplos

Exemplo 1
Entrada:
year = 2024
month = 2

Saída esperada:
expected = 29
Entrada:
long long year = 2024;
long long month = 2;

Saída esperada:
long long expected = 29;
Entrada:
long year = 2024;
long month = 2;

Saída esperada:
long expected = 29;

Explicação

2024 é divisível por 4 e não por 100, então é um ano bissexto: 29 dias.

Exemplo 2
Entrada:
year = 1900
month = 2

Saída esperada:
expected = 28
Entrada:
long long year = 1900;
long long month = 2;

Saída esperada:
long long expected = 28;
Entrada:
long year = 1900;
long month = 2;

Saída esperada:
long expected = 28;

Explicação

1900 é divisível por 100 mas não por 400, então não é um ano bissexto: 28 dias.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

A maioria dos meses tem uma quantidade fixa de dias; fevereiro depende de o ano ser bissexto.

Dica 2

Use uma pequena tabela com a quantidade de dias por mês e ajuste fevereiro com a regra de ano bissexto.

Dica 3

Cuidado com anos seculares: ser divisível por 100 não basta, a menos que também seja divisível por 400.

Complexidade esperada

tempo O(1), espaço extra O(1)

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.