Titlul: 1445 Peluza Nord Scris de: Andrei Grigorean din Noiembrie 17, 2013, 18:17:48 Aici puteţi discuta despre problema Peluza Nord (http://infoarena.ro/problema/peluzanord).
Titlul: Răspuns: 1445 Peluza Nord Scris de: Ilie Ovidiu Horatiu din Noiembrie 20, 2013, 20:52:43 Buna, imi puteti da si mie o idee cam cum ar trebui rezolvata problema asta?
Am citit acest articol http://en.wikipedia.org/wiki/Harshad_number , insa nu prea pricep ce si cum. Titlul: Răspuns: 1445 Peluza Nord Scris de: Florin Elfus din Noiembrie 20, 2013, 22:32:50 Nu am rezolvat problema inca, dar cred ca se poate face cu o dinamica. Intai observi ca numarul de numere shukare din intervalul [A, B] este de fapt numarul de numere shukare din intervalul [1, B] - numarul de numere shukare din intervalul [1, A - 1].
Acum pentru a calcula numarul de numere shukare din [1, X] iti tii urmatoarea dinamica: dp[nr_cifre][suma_cifre_actuala][suma_cifre_dorita][rest_modulo_suma_cifre_dorita][prefix_egal] = numarul de numere <= X astfel incat contin nr_cifre cifre, suma cifrelor celor nr_cifre este suma_cifre_actuala, dupa ce mai adaug alte cifre doresc sa obtin suma_cifre_dorita, restul sumei cifrelor celor nr_cifre de pana acum modulo suma_cifre dorita este rest_modulo_suma_cifre_dorita, iar prefix_egal este 1 daca pana acum toate cele nr_cifre adaugate coincid cu primele nr_cifre ale numarului X si 0 altfel. Pentru rezultat o sa ai ceva gen suma din dp[orice][orice2][orice2][0][0 sau 1]. La recurente e putin mai complicat :) Nu am testat-o, dar sper sa fie bine. Titlul: Răspuns: 1445 Peluza Nord Scris de: Bogdan Ciobanu din Februarie 13, 2016, 19:34:40 Ma poate ajuta cineva cu o idee? Am o solutie in O(3 * 10 * MAX_SUMA_CIFRE ^ 3 * NR_CIFRE).
Titlul: Răspuns: 1445 Peluza Nord Scris de: Mihai Calancea din Februarie 13, 2016, 22:08:48 Ai o idee exact mai sus :)
Titlul: Răspuns: 1445 Peluza Nord Scris de: Bogdan Ciobanu din Februarie 14, 2016, 00:31:30 Edit: se pare ca se incadreaza in timp cu memoizare =D>
|