plus k, potem modulo k - w jakim celu?

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

enter_andman ten post 09-02-2010 00:39





Witam,
ostatnio dla sportu rozwiązuje sobie zadania algorytmiczne z ACM. Z jednym mam szczególny problem ale znalazłem wzorcowe rozwiązanie na necie, które zostaje zaakceptowane przez sprawdzaczke rozwiązań. Nie rozumiem w tym rozwiązaniu tylko jednej linijiki, mianowicie:
map[i][(j- (abs(data[i])%k) +k )%k ]=true
a dokładnie fragmentu z dodawaniem k a potem braniem z tego modulo.
Zastanawia mnie czym to się różni od takiej linijki (bez dodawania k):
map[i][(j- (abs(data[i])%k) )%k ]=true

Okazuje się, że rozwiązanie bez dodawania k nie działa więc te 2 linijki nie są sobie równoważne [???]
to tak jakby
(x - y + k) mod k
nie było równoważne
(x - y) mod k

Czy ktoś może wie czym to się różni?
Przejdź na górę strony
cytuj
gosc ten post 09-02-2010 08:10





Pewnie piszesz w c badz c++ a tam operator modulo dla liczb ujemnych dziala troche inaczej - przykladowo:
(-1) mod 5 = -1 i pewnie z tych wzgledow dodajemy pozniej k i robimy jeszcze raz operacje mod k aby otrzymac wynik dodatni, taki jaki powinien byc.

//q: tak, dokladnie taki jest powod dodawania 'k' w ciemno - zeby wynikowa wartosc byla zawsze >= 0

Ostatnio zmodyfikowany: 09-02-2010 12:46 przez quetzalcoatl
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0141 sek. (zapytań SQL: 9)