infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Parvu din Mai 01, 2011, 20:15:38



Titlul: 1138 NumMst
Scris de: Andrei Parvu din Mai 01, 2011, 20:15:38
Aici puteti discuta despre problema NumMst (http://infoarena.ro/problema/nummst).


Titlul: Răspuns: 1138 NumMst
Scris de: MciprianM din Mai 05, 2011, 17:34:44
Imi poate explica si mie cineva de ce este necesar ca n sa fie compus?
Daca avem n = 7 nu ar fi raspunsul 3 4?


Titlul: Răspuns: 1138 NumMst
Scris de: Savin Tiberiu din Mai 05, 2011, 17:51:17
@Marginean Ciprian:
Complexitatea solutiei oficiala se bazeaza pe o teorema care e valabila numai in cazul numerelor compuse. Pentru numere prime complexitatea ar fi prea mare.


Titlul: Răspuns: 1138 NumMst
Scris de: Serban Andrei Stan din Mai 05, 2011, 17:54:30
Pentru n prim, putem face doua observatii:

1) Cmmdc-ul numerelor ce dau suma n va fi 1.

Dem.: Fie v1, v2..vk, astfel incat v1+v2+..+vk = n

Cmmdc(v1, v2..vk) divide n, dar n este prim, rezulta cmmdc = 1. (daca cmmdc = n rezulta k = 1 contradictie).



Acum, considerand cazul n compus, putem face urmatoarea observatie:

v1 = cmmdc * x1, v2 = cmmdc * x2 .. vk = cmmdc * xk

Noi vrem sa calculam cmmmc (v1, v2, .. vk).

Cmmmc(v1, v2 .. vk) = cmmdc(v1, v2..vk) * cmmmc(x1, x2 .. xk).

Stim ca suma x1 + x2 + ... + xk = S <= sqrt(n). (Alegem cmmdc-ul maxim => n / cmmdc <= sqrt(n)).

Problema se reduce la a gasi termenii x1, x2, .. xk astfel incat cmmmc(x1, x2, .. xk) sa fie maxim.

Acest lucru se poate rezolva cu o dinamica S * nr_prim, unde nr_prim reprezinta numarul de numere prime <= S.

2) Daca n ar fi prim, atunci x1 + x2 + .. + xk = v1 + v2 + .. + vk = n, deci solutia ar rula in O(n * nr_factori_primi <= n), ce ar depasi limita de timp, si ar forta o restrictie destul de stransa pentru n, gen 3000.

De aici vine restrictia n compus. Nu stiu daca exista un algoritm pur greedy pentru a genera cmmmc-ul maxim, si din ce stiu, toti cei care au luat 100 in concurs s-au bazat pe abordarea folosind programare dinamica.

Sper sa nu ma insel :).