Editorial for Lubenice
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Analiza
Primetimo da za svako i svako
važi
, iz čega sledi nejednakost
. U skladu sa ovim, razdvajamo problem na tri slučaja u zavisnosti od vrednosti
:
Prvi slučaj:
- Iz gornje nejednakosti imamo
, pa uslov tražen u zadatku ne može biti ispunjen ni za jedno
, te je konačno rešenje
, nezavisno od vrednosti
i
.
Drugi slučaj:
- U ovom slučaju imamo da je uslov tražen u zadatku ispunjen samo ako je
, što je moguće samo ako
i
i
, što je ekvivalentno tome da
, gde je
. Dakle, treba naći broj prirodnih brojeva deljivih sa
u intervalu
. Ovo dobijamo računanjem broja takvih brojeva u
i oduzimanjem broja takvih brojeva u
:
.
Treći slučaj:
- Poslednji slučaj je najsloženiji jer nas prvobitna nejednakost ne dovodi direktno do zaključka, tj. da li je podela moguća za neko
zavisi na netrivijalan način od deljivosti sa
.
- Iako nas ograničenja za
i
odvraćaju od brute-force rešenja (prolazak kroz sve brojeve od
i
i provera da li je traženi izraz tačan), često je u ovakvim situacijama, kada je potrebno pronaći šablon, dobra ideja generisanje i posmatranje vrednosti koje brute-force proizvede. Ukoliko to ovde uradimo za npr.
(drugi podzadatak) i
možemo primetiti da je podela moguća za svako
, iz čega prirodno pretpostavljamo da je moguća za svako
. U ovu pretpostavku se možemo dodatno ubediti povećavanjem
.
- Ukoliko je ovo tačno za
, tačno je i za svako drugo
koje spada u treći slučaj, jer mora da važi
(proveriti!) pa je stoga (ako je naša pretpostavka tačna) za svako
:
.
- Ovo nas dovodi do efikasnog rešenja za treći slučaj: za svako
u
proverimo uslov "ručno", dok za
pretpostavimo da sigurno važi. Ovo se ispostavlja kao tačno, a ukoliko želimo da budemo u potpunosti sigurni moguće je tvrdnju sličnu našoj pretpostavci i malo formanije dokazati (hint: posmatrati ponašanje izraza
za
).
Comments