Problem
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.
Einschränkungen
1 ≤ year ≤ 9,999; 1 ≤ month ≤ 12
Beispiele
Eingabe:
year = 2024
month = 2
Erwartete Ausgabe:
expected = 29
Eingabe:
long long year = 2024;
long long month = 2;
Erwartete Ausgabe:
long long expected = 29;
Eingabe:
long year = 2024;
long month = 2;
Erwartete Ausgabe:
long expected = 29;
Erläuterung
2024 is divisible by 4 and not by 100, so it is a leap year: 29 days.
Eingabe:
year = 1900
month = 2
Erwartete Ausgabe:
expected = 28
Eingabe:
long long year = 1900;
long long month = 2;
Erwartete Ausgabe:
long long expected = 28;
Eingabe:
long year = 1900;
long month = 2;
Erwartete Ausgabe:
long expected = 28;
Erläuterung
1900 is divisible by 100 but not 400, so it is not a leap year: 28 days.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Die meisten Monate haben eine feste Tageszahl; Februar hängt davon ab, ob das Jahr ein Schaltjahr ist.
Hinweis 2
Nutze eine kleine Tabelle für die Monatslängen und passe dann Februar mit der Schaltjahrregel an.
Hinweis 3
Achte bei Jahrhundertjahren auf die Regel: durch 100 teilbar reicht nicht, außer auch durch 400 teilbar.
Erwartete Komplexität
Zeit O(1), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.