Dzień tygodnia dla daty (Zeller)
Treść zadania
Wczytaj datę d, m, y i wyznacz nazwę dnia tygodnia, używając kongruencji Zellera dla kalendarza gregoriańskiego.
Kroki:
- Jeśli $m \le 2$, potraktuj styczeń i luty jako 13. i 14. miesiąc poprzedniego roku: $m = m + 12$, $y = y - 1$.
- Oblicz:
- $K = y \bmod 100$ (rok w stuleciu),
- $J = \lfloor y / 100 \rfloor$ (stulecie),
- $h = \left(d + \left\lfloor \frac{13(m+1)}{5} \right\rfloor + K + \left\lfloor \frac{K}{4} \right\rfloor + \left\lfloor \frac{J}{4} \right\rfloor + 5J\right) \bmod 7$.
- Zamień
hna dzień tygodnia:- 0 →
Sobota - 1 →
Niedziela - 2 →
Poniedziałek - 3 →
Wtorek - 4 →
Środa - 5 →
Czwartek - 6 →
Piątek
- 0 →
Dane wejściowe
3 liczby całkowite, każda w osobnej linii: d, m, y.
Dane wyjściowe
Jedna linia: nazwa dnia tygodnia — dokładnie jedna z: Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota, Niedziela.
Ograniczenia
- Podana data jest poprawna (nie musisz jej sprawdzać).
- $1 \le y \le 9999$
Uwagi
- W Pythonie $\lfloor a / b \rfloor$ to
a // b, a $a \bmod b$ toa % b.
Przykład
9 10 2020
Piątek
$m = 10$, $y = 2020$, więc $K = 20$, $J = 20$, $h = (9 + 28 + 20 + 5 + 5 + 100) \bmod 7 = 167 \bmod 7 = 6$, czyli piątek.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 3
Zadania w tym rozdziale dotyczą walidacji i obliczeń na datach w kalendarzu gregoriańskim.
Konwencje wspólne:
- Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Liczby wczytuj z osobnych linii, w kolejności z opisu. Data jest zawsze podawana jako trzy liczby: dzień, miesiąc, rok.
- Komunikaty wypisuj dokładnie jak w treści (kropki, polskie znaki, wielkość liter, spacje).
- Jeśli zadanie mówi „nie wypisuj nic” — program kończy się bez żadnego wyjścia.
- Program nie wypisuje komunikatów typu „Podaj liczbę:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę. - We wszystkich zadaniach obowiązuje kalendarz gregoriański (także dla lat sprzed 1582 roku). Rok jest przestępny, gdy jest podzielny przez 4 i nie jest podzielny przez 100, albo gdy jest podzielny przez 400 (np. 2024 i 2000 są przestępne, a 2023 i 1900 — nie). Luty ma w roku przestępnym 29 dni, a w nieprzestępnym 28.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono29 2 2020
Sobota
Test 2
Nie uruchomiono4 7 2023
Wtorek
Test 3
Nie uruchomiono1 1 2000
Sobota
Test 4
Nie uruchomiono1 1 1900
Poniedziałek
Test 5
Nie uruchomiono1 1 2023
Niedziela
Test 6
Nie uruchomiono1 3 2000
Środa
Test 7
Nie uruchomiono25 12 2025
Czwartek
Test 8
Nie uruchomiono31 1 2024
Środa