Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 1190 Grad  (Citit de 792 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
andrei.12
Echipa infoarena
Nu mai tace
*****

Karma: 107
Deconectat Deconectat

Mesaje: 381



Vezi Profilul
« : Iunie 26, 2011, 07:18:39 »

Aici puteţi discuta despre problema Grad.
Memorat
lucian666
Client obisnuit
**

Karma: 16
Deconectat Deconectat

Mesaje: 84



Vezi Profilul
« Răspunde #1 : Octombrie 24, 2012, 22:20:31 »

 Smile Buna seara .La problema asta orice as face mai mult de 35 pct nu  iau Brick wall
Procedez in felul urmator:
1.Pt fiecare cuvant din propozitie(pe  care il extrag cu strtok ) ii calculez numarul asociat astfel:

Cod:
int rez=0
 for(int i=0; p[i] ;i++)
prod *= make_putere(p[i]-'0'-48,++rez);


unde make_putere calculeaza a la puterea b.

2.pt numarul gasit ii calculez divizorii cu o formula ...

3.la solutie adun nr de divizori modulo lungimea sirului

Mi se pare OK algoritmul insa nu stiu dc iau Incorect Brick wall Brick wall Cry

Vreo sugestie ceva?

Multumesc Anticipat!!! Smile
Memorat
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« Răspunde #2 : Octombrie 24, 2012, 22:29:37 »

Tocmai am luat 100, am facut asa: gradul cuvantului l-am descompus in factori primi ca sa imi fie usor sa aflu numarul de divizori. O sa ai nevoie de un vector V unde sa tii V[ i ] - de cate ori apare i in descompunerea in factori primi a gradului.
Cand iei o litera, inmultesti gradul cu un numar de forma X ^ Y. Descompui pe X in factori primi, iar in V in loc sa faci V[factorprim] += puterea, faci V[factorprim] += puterea * Y, pt ca daca te uiti 4 ^ 3 poti sa il scrii ca (2 ^ 2) ^ 3 = 2 ^ 6, 2 ^ 2 fiind descompunerea in factori primi a lui 4.
La final iterezi prin numerele prime si faci numarul de divizori dupa formula si aduni la solutie. Dupa ce termini cu un cuvant sa faci V[ i ] = 0 peste tot. Ok


LE: problema la tine, cel mai probabil, e ca daca ai o propozitie dintr-un singur cuvant cu 255 de litere, iar ultima litera e z, ai 26 ^ 255, ceea ce e mult prea mult.
« Ultima modificare: Octombrie 24, 2012, 22:38:42 de către Visan Radu » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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