•caen1
Client obisnuit

Karma: 22
Deconectat
Mesaje: 75
|
 |
« Răspunde #25 : Mai 14, 2011, 20:54:08 » |
|
Am reusit sa o rezolv de 100 verificand daca N este prim inainte de a calcula rezultatul. Asta ar fi solutia corecta?
|
|
« Ultima modificare: Mai 14, 2011, 22:22:24 de către C.A.EN »
|
Memorat
|
|
|
|
•MciprianM
|
 |
« Răspunde #26 : Mai 15, 2011, 08:56:44 » |
|
Pentru a afla divizorii unui numar poti face asa: for ( d = 2; d * d <= n; ++ d ){ if ( n % d == 0 ) scrie d si n/d }
Astfel in O(sqrt(n)) putem afla toti divizorii! Totusi atentie la patrate perfecte!(9, 16, ...) Pentru descompunere in factori primi, putem face similar: k = 0; for ( d = 2; d * d <= n; ++ d ){ if ( n%d==0 ){ p [ k ] = d; e [ k ] = 0; k ++;} while ( n % d == 0 ){ e [ k - 1] ++; n/=d; } } if ( n > 1 ){p[k]=n;e[k ]=1;k++;}
|
|
« Ultima modificare: Mai 15, 2011, 09:02:01 de către Marginean Ninu Ciprian »
|
Memorat
|
|
|
|
•ctlin04
|
 |
« Răspunde #27 : Iulie 15, 2011, 19:43:59 » |
|
cei care au gasit solutia problemei cmmmc de la ONI 2010, dati-mi si mie va rog un link, ca tot caut sa nu pot gasi nimic 
|
|
|
Memorat
|
|
|
|
•Magnus
Client obisnuit

Karma: 0
Deconectat
Mesaje: 57
|
 |
« Răspunde #28 : Iulie 15, 2011, 19:52:54 » |
|
Cred ca ar fi mai bine sa postezi aici pentru ca problema cmmmc este si pe infoarena.
|
|
|
Memorat
|
|
|
|
•ctlin04
|
 |
« Răspunde #29 : Iulie 15, 2011, 20:15:37 » |
|
defapt, de acolo doaream sa aflu formula pentru a rezolva anume aceasta problema 
|
|
|
Memorat
|
|
|
|
•Magnus
Client obisnuit

Karma: 0
Deconectat
Mesaje: 57
|
 |
« Răspunde #30 : Iulie 15, 2011, 20:41:05 » |
|
Oricum, daca esti interesat de problema cmmmc, e mai bine sa postezi acolo. Daca nu, atunci spune ca esti interesat de perechi. Uite un hint pentru perechi.
Daca ai n=a1d1*a2d2*...*akdk considera vectorul d. pentru fiecare element i te gandesti asa: 1. exista un caz in care si numarul x si numarul y au in componenta aidi. 2. exista un caz in care numarul x contine aidi, iar y are ai in componenta dar nu de suficient de multe ori. 3. exista un caz in care numarul y contine aidi, iar x are ai in componenta dar nu de suficient de multe ori.
nici x, nici y nu vor avea ai in componenta la un exponent mai mare de di.
Si nu depinde de cum alegi pentru i ca sa alegi pentru j.
Daca vreun admin/moderator considera ca am zis un prea mult il rog sa-mi stearga postul.
|
|
|
Memorat
|
|
|
|
•ctlin04
|
 |
« Răspunde #31 : August 01, 2011, 19:49:37 » |
|
Poate sa-mi dea careva vreo sugestie de ce am intruna NON ZERO EXIT STATUS la testul 9, pls?
|
|
|
Memorat
|
|
|
|
•Stefex09
Strain
Karma: 0
Deconectat
Mesaje: 5
|
 |
« Răspunde #32 : Ianuarie 03, 2012, 21:05:03 » |
|
eu nu am facut descompunerea in factori in for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) calculez cmmdc i si j si calculez cmmmc cu formula cmmmc=(a*b)/cmmdc(a,b) (formula tine) si iau TLE la majoritatea (iau 15 puncte) cum ar trb sa fac? 
|
|
|
Memorat
|
|
|
|
•elfus
Client obisnuit

Karma: 77
Deconectat
Mesaje: 96
|
 |
« Răspunde #33 : Ianuarie 03, 2012, 21:17:38 » |
|
Stefane, vezi ca ai complexitatea O(N^2) care e prea mare aici. In mod normal cu N^2 intra pentru N <= 1000. Intra si tu pe fb si iti zic acolo cum sa faci, nu pot sa scriu aici solutia (sau citeste postu' lu Magnus de mai sus).
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #34 : Ianuarie 03, 2012, 21:47:12 » |
|
De fapt el are O(N^2 log N), deoarece calculeaza la fiecare pas cmmdc-ul.
|
|
|
Memorat
|
Am zis 
|
|
|
•visanr
|
 |
« Răspunde #35 : Aprilie 25, 2012, 21:51:40 » |
|
Imi puteti spune si mie care ar fi motivul pt care iau incorect pe testul 7? http://infoarena.ro/job_detail/741411 Am trimis in cateva luni peste 80 de surse, nu pot lua 100...
|
|
|
Memorat
|
|
|
|
•dushmi
|
 |
« Răspunde #36 : Aprilie 25, 2012, 21:59:52 » |
|
Cred ca greseala ta este in urmatoarea parte a codului: if(n>1) factors.push_back(n);
Trebuie sa fie:
|
|
|
Memorat
|
|
|
|
•visanr
|
 |
« Răspunde #37 : Aprilie 25, 2012, 22:01:10 » |
|
Asta era, multumesc mult!
|
|
|
Memorat
|
|
|
|
•RaduGabriel2012
Strain
Karma: 7
Deconectat
Mesaje: 26
|
 |
« Răspunde #38 : Noiembrie 05, 2012, 20:39:31 » |
|
Hint : cmmmc a doua nr nu poate fi = cu n daca produsul lor e mai mic ca n.
|
|
|
Memorat
|
|
|
|
•DxH5dIMHN
Strain
Karma: -5
Deconectat
Mesaje: 9
|
 |
« Răspunde #39 : Noiembrie 11, 2012, 14:48:25 » |
|
Finally! Cred ca acum merge si pentru N>2^31 - Pentru N=6227020800 exista 1584 divizori si 15592 de perechi gasite sub 0,5 secunde (in medie 400-450 ms) - Nu stiu daca valorile sunt trunchiate 
|
|
|
Memorat
|
|
|
|
•Dddarius95
Client obisnuit

Karma: 30
Deconectat
Mesaje: 66
|
 |
« Răspunde #40 : August 04, 2013, 15:04:36 » |
|
va rog sa ma ajutati...iau 90p...incorect pe testele 9 si 18....... am gasit o formula in care apar exponentii numerelor prime din descompunerea lui n in factori.... totusi da incorect pe 2 teste si nu stiu de ce.....am scris tot codul de la capat si degeaba... e vreun caz special ceva? LE: void Solve() { for(int i=1;i<=k && n!=1;i++) if(n % P[i]==0) { int exp=0; while(n % P[i]==0)n/=P[i],exp++; //formula-sol }
g<<sol<<'\n';
}
|
|
« Ultima modificare: August 05, 2013, 09:34:30 de către Neatu Darius Florentin »
|
Memorat
|
|
|
|
•vendetta
|
 |
« Răspunde #41 : August 04, 2013, 17:35:08 » |
|
Pierzi cazul cand n > 1( dupa ce l-ai descompuns in factori primi ). Trateaza acest caz si o sa iei 100.
|
|
|
Memorat
|
|
|
|
•Dddarius95
Client obisnuit

Karma: 30
Deconectat
Mesaje: 66
|
 |
« Răspunde #42 : August 04, 2013, 19:28:32 » |
|
da...ai avut dreptate...ms mult....nu observasem treaba asta....si trimisesem 5000 de surse:D....ms mult...voi fi mai atent pe viitor
|
|
|
Memorat
|
|
|
|
•patcasrares
Strain
Karma: 0
Deconectat
Mesaje: 2
|
 |
« Răspunde #43 : August 15, 2016, 18:14:28 » |
|
ce se intampa daca n e prim
|
|
|
Memorat
|
|
|
|
•Trixer
Strain
Karma: 0
Deconectat
Mesaje: 3
|
 |
« Răspunde #44 : August 16, 2016, 15:11:31 » |
|
Daca n e prim atunci vei avea doar 2 perechi: (1, n), (n, n).
|
|
|
Memorat
|
|
|
|
•Coroian_David
Strain
Karma: 0
Deconectat
Mesaje: 20
|
 |
« Răspunde #45 : Noiembrie 05, 2016, 13:09:46 » |
|
Salut! iau 10 puncte si nu inteleg de ce, am folosit formula: ((exp1 * 2 + 1) * (exp2 * 2 + 1) * ... * (expn * 2 + 1) + 1) / 2
LE : am 100.
|
|
« Ultima modificare: Decembrie 07, 2016, 17:04:57 de către Coroian David »
|
Memorat
|
|
|
|
|