Ułamki ( omówienie )
11.08.2010
Jeżeli ułamek a/b spełnia warunki zadania to znaczy, że po jego skróceniu zarówno licznik i mianownik są mniejsze równe M. W rozwiązaniu wzorcowym rozpatrujemy wszystkie nieskracalne ułamki x/y (1 <= x, y <= M) i patrzymy ile jest ułamków z/w (z,w <= N) takich że z/w = x/y. Robienie tego wprost wymaga rozpatrzenia M^2 ułamków co oczywiście nie zmieści się w czasie. Należy rozpatrywać ułamki grupami. Najpierw rozpatrzmy przypadek gdy licznik = mianownik. Jest N ułamków spełniających wymogi, które skracają się do 1/1. Przypadki licznik < mianownik oraz licznik > mianownik są symetryczne. Omówiony zostanie przypadek licznik < mianownik. Rozpatrzmy grupe nieskracalnych ułamków mniejszych od 1, których mianownik jest równy X. Ilość nieskracalnych ułamków o mianowniku równym X to phi[X] (http://en.wikipedia.org/wiki/Euler's_totient_function). Dla każdego ułamka Y/X z tej grupy, jest N/X ułamków których licznik i mianownik jest <= N i które skracają się do Y/X. Wobec tego rozwiązanie zadania to:
Dodatkowo szybkie obliczanie tablicy phi.
|
Copyright © 2008-2010 Wrocławski Portal Informatyczny
design: rafalpolito.com