Zagadka buntownicza

 

Grupa ekstremistów z Wydziału Matematyki Wyższej Uniwersytetu w Ohio zagroziła…

No dobrze. Nie zagroziła. Na Wydziale Matematyki w Ohio pracuje pięćdziesięcioro troje miłych i sympatycznych ludzi z różnych stron świata, którzy nie mają żadnego interesu w wysadzaniu czegokolwiek. Ale dla dobra zagadki załóżmy na chwilę, że jest inaczej 😉

… zagroziła, że w latach 2000 – 2100 będzie wysadzać w powietrze jeden losowo wybrany zabytek na świecie każdego dnia, w którym numer dnia przemnożony przez numer miesiąca da w wyniku numer roku zapisany bez dwóch najstarszych cyfr (a więc: 18 dla roku 2018, 72 dla roku 2072 i tak dalej).

Pytanie #1: Ile zabytków straci ludzkość, jeżeli szaleni ekstremalni matematycy (matematyczni ekstremiści?) z Ohio dotrzymają obietnicy?
Pytanie #2: Kiedy nastąpi i ile dni potrwa najdłuższa przerwa między atakami tych szaleńców?
Pytanie #3: W którym roku stracimy najwięcej zabytków?
Pytanie #4: A w którym – najmniej?

Czas – start!

12
Dodaj komentarz

avatar
3 Comment threads
9 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
RzastxpilButter Recent comment authors
  Subscribe  
najnowszy najstarszy oceniany
Powiadom o
Butter
Gość
Butter

data końcowa to 2099-12-31 czy 2100-12-31?

Rzast
Gość
Rzast

Ad4: w 2000
Na razie napisałem program, który wypisuje dzielniki liczb 0d 0 do 99. Teraz dalsza analiza

Rzast
Gość
Rzast

Ad2 Najdłuższa przerwa to od 1 stycznia 2000 do 1 stycznia 2001

Rzast
Gość
Rzast

Ad3: 7 w 2024

Spoiler
24.1.2024
12.2.2024
8.3.2024
6.4.2024
4.6.2024
3.8.2024
2.12.2024

Ad1: 210

Rzast
Gość
Rzast

Poprawka do Ad2, bo tamto to był strzał:
od 19.03.2057 do 20.03.2060 – prawie 3 lata

Butter
Gość
Butter

— pytanie #1 = 212
— pytanie #3 = 2024 [7]
— pytanie #4 – jest 25 lat tylko z jednym zamachem…

declare @st datetime;
declare @en datetime;
select @st= ‚2001-01-01’, @en = ‚2099-12-31’;

with zakres as (
select @st data
union all
select dateadd(day,1, data)
from zakres
where data+1<=@en
),
dane as
( select data, DATEPART(day,data) * DATEPART(mm,data)- DATEPART(yy,data)+2000 bum
from zakres
)

, pyt3 as (
select datepart(yy,data) rok, count(bum) ile
from dane
where bum=0
group by datepart(yy,data)
)

select * from pyt3
order by ile
OPTION (maxrecursion 0)

Butter
Gość
Butter

pyt 2: 2057-03-19 –> 2060-03-20 czyli 1097 dni

Butter
Gość
Butter

pyt 4: są lata bez zamachu – wniosek z komentarza poniżej.
2037, 2041, 2043, 2047, 2053, 2058, 2059, 2061, 2062, 2067, 2071, 2073, 2074, 2079, 2082, 2083, 2086, 2089, 2094 ,2097