Editorial for Slepi brojevi
Submitting an official solution before solving the problem yourself is a bannable offence.
Analiza
Primetimo da, u svim potproblemima, možemo na početku izdvojiti sve slepe brojeve - proveru da li je neki broj slep možemo uraditi u složenosti , tako da možemo izdvojiti sve takve u
, što je dovoljno brzo.
Potproblem 1
Primetimo da možemo da probamo sve parove slepih brojeva (ima ih najviše (gruba granica)), i videti koji od tih parova je klep, proverom da li
deli njihov proizvod, u složenosti
Potproblem 2
Zapravo, nas samo interesuju ostaci svih slepih brojeva pri deljenju sa - samo od ostataka pri deljenju dva broja nekim brojem zavisi i ostatak proizvoda. Dakle, možemo imati brojač koliko postoji slepih brojeva sa svakim ostatkom, i u
izračunati koliko ima klepih parova.
Potproblemi 3 i 4
Neka je broj slepih brojeva deljivih sa
. Posmatrajmo sve ostale slepe brojeve. Ukoliko posmatramo neki broj
, neka je
. Par
će biti klep ukoliko važi
- dakle, kada tražimo sve brojeve koji formiraju klep par sa brojem
, treba nam broj brojeva deljivih sa nekim brojem. To možemo lako uraditi prolaskom kroz niz slepih brojeva (tj. njihovih ostataka pri deljenju sa
) - kada naiđemo na broj
, dodamo
na rešenje, i uvećamo
svakog delioca broja
za 1. Ovo rešenje radi u složenosti
, što je sigurno dovoljno brzo, jer ne postoji ulaz za koji je broj slepih brojeva veći od 50000. Na ovo dobijeno rešenje treba dodati
, kao i
.
Comments