Pagini recente » Monitorul de evaluare | Diferente pentru teoria-jocurilor/probleme intre reviziile 11 si 9 | Istoria paginii utilizator/1w1p | Istoria paginii utilizator/fogab | Diferente pentru solutie/nrchei intre reviziile 4 si 5
Diferente pentru
solutie/nrchei intre reviziile
#4 si
#5
Nu exista diferente intre titluri.
Diferente intre continut:
Pana acum am facut suficiente observatii ca sa putem trece la partea algoritmica a rezolvarii problemei. O prima idee de solutie ar fi sa calculam desigur sirul $s{~i~}$ = restul impartirii lui <tex> \delta(k) </tex> la $MOD$. Acum am putea fixa $K$, si in caz ca e par, am fixa si valoarea lui $A$, am cauta valoarea lui $T$ pentru care ecuatia care il leaga de $n$ sa se respecte si am deduce tot ce avem nevoie din tabelul $s$. In functie de abordarea calculului, solutia va obtine intre $64$ (ar fi un lowerbound pentru orice idee decenta) si $100$ de puncte:
* O metoda bruta ar fi sa calculam sirul $s$ pana la valoarea lui $n$, folosind o metoda patratica de a verifica toti divizorii unui numar. Cautarea lui $T$ se face in cel mai banal fel posibil. Calculul valorilor lui <tex> \Sigma^{h} </tex>, atunci cand sunt cerute, in <tex> O(h) </tex>. _Daca cineva, in timpul unei runde lungi, se incapataneaza sa ajunga cu rationamentul aici si sa nu faca un pas spre a-si optimiza codul, sper ca nu va lua un punctaj mai mare decat il merita..._
* O metoda bruta ar fi sa calculam sirul $s$ pana la valoarea lui $2n + 2$, folosind o metoda patratica de a verifica toti divizorii unui numar. Cautarea lui $T$ se face in cel mai banal fel posibil. Calculul valorilor lui <tex> \Sigma^{h} </tex>, atunci cand sunt cerute, in <tex> O(h) </tex>. _Daca cineva, in timpul unei runde lungi, se incapataneaza sa ajunga cu rationamentul aici si sa nu faca un pas spre a-si optimiza codul, sper ca nu va lua un punctaj mai mare decat il merita..._
* Sunt multe feluri de a imbunatati solutia precedenta: Putem precalcula puterile lui <tex> \Sigma </tex>, il putem cauta pe $T$ in <tex> O(log(n)) </tex> sau in <tex> O(1) </tex>, amortizat sau nu. Putem gasi divizorii unui numar cu un algoritm mai eficient, sau putem chiar folosi ciur pentru a determina valorile din sirul $s$.
* Pasul important catre solutia de $100$ de puncte il constituie observatia ca numarul de numere mai mari ale caror valori in sirul $s$ sunt interesante pentru noi este foarte scazut, si putem folosi memoizare pentru calculul acestora. O observatie care poate fi de folos aici e ca $T$ divide $n$, prin urmare putem incerca divizorii sai, pentru care cautam valori $K, A$ pentru care exista o sansa sa se potriveasca in ecuatie, iar apoi calculam valorile relevante din $s$ pentru a actualiza raspunsul
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.