Titlul: 1190 Grad Scris de: Andrei Parvu din Iunie 26, 2011, 07:18:39 Aici puteţi discuta despre problema Grad (http://infoarena.ro/problema/grad).
Titlul: Răspuns: 1190 Grad Scris de: Vasilut Lucian din Octombrie 24, 2012, 22:20:31 :) Buna seara .La problema asta orice as face mai mult de 35 pct nu iau ](*,)
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 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 ](*,) ](*,) :'( Vreo sugestie ceva? Multumesc Anticipat!!! :) Titlul: Răspuns: 1190 Grad Scris de: Visan Radu din 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. |