Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 073 Perechi  (Citit de 12898 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
caen1
Client obisnuit
**

Karma: 22
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 87
Deconectat Deconectat

Mesaje: 324



Vezi Profilul
« Răspunde #26 : Mai 15, 2011, 08:56:44 »

Pentru a afla divizorii unui numar poti face asa:

Cod:
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:
Cod:
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
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« 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 Brick wall
Memorat
Magnus
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #29 : Iulie 15, 2011, 20:15:37 »

defapt, de acolo doaream sa aflu formula pentru a rezolva anume aceasta problema Confused
Memorat
Magnus
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« 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 Deconectat

Mesaje: 5



Vezi Profilul
« 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? Very Happy
Memorat
elfus
Client obisnuit
**

Karma: 77
Deconectat Deconectat

Mesaje: 96



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« 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 Mr. Green
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 130
Deconectat Deconectat

Mesaje: 472



Vezi Profilul
« Răspunde #36 : Aprilie 25, 2012, 21:59:52 »

Cred ca greseala ta este in urmatoarea parte a codului:
Cod:
if(n>1) factors.push_back(n);

Trebuie sa fie:
Cod:
factors.push_back(1);
Memorat
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« Răspunde #37 : Aprilie 25, 2012, 22:01:10 »

Asta era, multumesc mult!
Memorat
RaduGabriel2012
Strain
*

Karma: 7
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« 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 Deconectat

Mesaje: 9



Vezi Profilul
« 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  Yahoo!
Memorat
Dddarius95
Client obisnuit
**

Karma: 30
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« 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:
Cod:
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
De-al casei
***

Karma: 72
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« 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 Deconectat

Mesaje: 66



Vezi Profilul
« 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 Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #43 : August 15, 2016, 18:14:28 »

ce se intampa daca n e prim
Memorat
Trixer
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« 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 Deconectat

Mesaje: 20



Vezi Profilul
« 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
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines