Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 486 Exp  (Citit de 10438 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : August 14, 2007, 10:12:40 »

Aici puteţi discuta despre problema Exp.
Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #1 : August 14, 2007, 22:17:38 »

Abia am reusit cu citire parsata + nr prime precalculate sa iau 100... se poate si fara precalculari si parsari? Daca da, da cineva o idee?
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #2 : August 15, 2007, 08:23:57 »

Dap. Se poate. Nu tre decat sa tii un vector, cu urm. semnificatie: a[ i ]=de cate ori apare i, in descompunerea in factori primi a tuturor numerelor din exp.in. Apoi, nu tre decat o simpla verficare.

Succes!  Thumb up
« Ultima modificare: August 15, 2007, 08:57:36 de către Marcu Florian » Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #3 : August 15, 2007, 12:12:09 »

Dar trebuie sa factorizezi fiecare numar, nu? Cel putin eu asa am facut, si fara parsare + precalculare nu a intrat..

Factorizarea am facut-o in O(sqrt(nr))
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #4 : August 17, 2007, 11:28:21 »

Dap. Eu am o sursa in care am factorizat fiecare numar [ atentie! metoda "normala", nu aia cu eratostene ], apoi ink o parcurgere. A intrat fara probleme. [ fara parsare si fara precalculare ].
Memorat
Tudorutzu
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #5 : Februarie 23, 2008, 19:56:37 »

ce este citirea parsata? are legatura cu limbajul de programare sau este o metoda de lucru? nu reusesc decat 80 de puncte sa iau... am dat copy/paste la solutia oficiala(  Embarassed ) si tot 80 am luat...
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #6 : Februarie 23, 2008, 20:18:41 »

ce este citirea parsata? are legatura cu limbajul de programare sau este o metoda de lucru? nu reusesc decat 80 de puncte sa iau... am dat copy/paste la solutia oficiala(  Embarassed ) si tot 80 am luat...

Parsarea citirii inseamna a citi mai intai ca un sir de caractere, si apoi transformarea lui in sir de intregi. Dar asta e o metoda de bulaneala. Te sfatuiesc sa ai grija cum faci descompunerea unui numar in factori primi. Daca de exemplu, vrei sa descompui numarul P, at complexitatea timp trebuie sa fie O(sqrt(P)).

                                                                      Florian
Memorat
Tudorutzu
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #7 : Februarie 24, 2008, 01:19:51 »

nu imi dau seama... Brick wall...am facut cu numerele prime precalculate si pentru a-l descompune pe X fac:
 
Cod:
while x<>1 do
begin
       while x mod p[j] = 0 do
       begin
              x:=x div p[j];
              inc(a[j]);
       end;
       inc(j);
end;
unde p este vectorul de numere prime iar in a numar de cate ori apare fiecare numar prim; presupun k partea asta reprezinta la tine descompunerea in factori primi; oricum, tot 90 iau si fara precalculare; Brick wall cum sa fac sa se incadreze? Brick wall  Think
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #8 : Februarie 24, 2008, 08:24:48 »

Dureaza mult precalcularea vectorului de numere prime. Incearca sa renunti la el. Fa o factorizare normala. Uite un pseudocod:

Cod:

k=2;
r=0;
while(n%k==0)  {++r; n/=k;}
prelucrez(k,r); //k apare la puterea r
k=3;
while(k*k<=n)
    {
    r=0;
    while(n%k==0) { ++r, n/=k; }
    prelucrez(k,r);  //k apare la puterea r
    k+=2;
    }
if(n>1)
   {
   //numarul n-ramas , este prim=> apare la puterea 1
   prelucrez(n,1).
   }


Succes.
Memorat
Vlad-andrei
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 21



Vezi Profilul
« Răspunde #9 : Martie 02, 2008, 09:55:58 »

Ce inseamna m-ul acela din fata?Inmultire?
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #10 : Martie 02, 2008, 10:49:38 »

E gradul radicalului.
Memorat
marius21
Strain
*

Karma: -20
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #11 : Aprilie 29, 2008, 20:37:31 »

Ce inseamna m-ul acela din fata?Inmultire?
 
radical de gradul m din nm = n
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #12 : Aprilie 29, 2008, 21:17:30 »

Citat
radical de gradul m din nm = n
Nu neaparat Smile
radical de ordinul 2 din (-2)2 = 2, nu cu -2
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #13 : Noiembrie 11, 2008, 22:28:27 »

Am rezolvat si eu problema, insa iau 0 pct, desi pe teste de la oji iau 100 pct cu aceeasi sursa.
Am folosit un vector de numere prime, la fiecare avand numarul de aparitii al acestuia in produsul x1*x2*...*xn
Care ar putea fi problema?

Link catre detalii compilare: http://infoarena.ro/job_detail/230175

Sursa mea este urmatoarea:
Cod:
...

[edit] am scos sursa
« Ultima modificare: Februarie 18, 2009, 16:09:38 de către Sima Cotizo » Memorat
andrici_cezar
De-al casei
***

Karma: -47
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #14 : Noiembrie 26, 2008, 17:09:00 »

cine imi zice si mie cum arata testul 2 sau e acelasi ca si la OJI?
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #15 : Ianuarie 21, 2009, 13:07:44 »

Am rezolvat si eu problema, insa iau 0 pct, desi pe teste de la oji iau 100 pct cu aceeasi sursa.
Am folosit un vector de numere prime, la fiecare avand numarul de aparitii al acestuia in produsul x1*x2*...*xn
Care ar putea fi problema?

Link catre detalii compilare: http://infoarena.ro/job_detail/230175

Sursa mea este urmatoarea:
Cod:
...

Scz ca postez din nou in legatura cu acelasi subiect.....insa nu inteleg de ce iau 0 pct cu sursa asta:((.....
Imi da WA la toate testele.....iar pe testele de la oji imi merge perfect.....de ce? Fighting
« Ultima modificare: Februarie 18, 2009, 16:09:54 de către Sima Cotizo » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #16 : Ianuarie 22, 2009, 13:28:14 »

Compileaza cu C++, nu cu C.

Tu folosesti in sursa chestii specifice C++, care nu exista in C. Nu inteleg de ce nu iti da eroare de compilare Smile. Oricum, am trimis sursa ta cu extensia cpp si am luat 100 Thumb up
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #17 : Ianuarie 28, 2009, 20:32:34 »

Compileaza cu C++, nu cu C.

Tu folosesti in sursa chestii specifice C++, care nu exista in C. Nu inteleg de ce nu iti da eroare de compilare Smile. Oricum, am trimis sursa ta cu extensia cpp si am luat 100 Thumb up

Multumesc.....
Intradevar...am trimis la compilare pt c++ si iau 100 pct (offf....si cat timp am pierdut sa tot verific sursa crezand ca gandesc eu gresit  Fighting )
Acum...as vrea sa stiu ce anume din aceasta sursa nu e compatibil cu C.....Eu obisnuisem in ultima vreme sa fac toate sursele in C.....si pana acum toate mi-au functionat cum trebuie....Si din pacate nu vad ce anume nu e compatibil cu c  Embarassed. I-as fi recunoscator celui care imi spune ce anume din sursa nu e compatibil cu C.
Multumesc in ca o data.

Compileaza cu C++, nu cu C.

Tu folosesti in sursa chestii specifice C++, care nu exista in C. Nu inteleg de ce nu iti da eroare de compilare Smile. Oricum, am trimis sursa ta cu extensia cpp si am luat 100 Thumb up

Am mai observat ca si sursa trimisa la compilare cu C se ruleaza...
Puteti vedea in borderoul de evaluare timpii rulati pt fiecare test (care sunt identici cu cei care ii obtine sursa trimisa la compilare cu C++(ce obtine si punctaj maxim))......De ce totusi 0 pct?

[edit] am imbinat 2 post-uri
« Ultima modificare: Februarie 18, 2009, 16:10:40 de către Sima Cotizo » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #18 : Ianuarie 29, 2009, 00:17:45 »


@wefgef.  Sursa este corecta din punct de vedere a sintaxei C-ului. Dupa ce m-am uitat pe ea, am compilat-o cu cele 3 compilatoare pe windows (gcc = DJGPP C, gnuc e MinGw C si cl e Visual C), cu warning-uri si nu crapa.
Cod:
G:\toni\probleme>gcc -Wall -W exp.c

G:\toni\probleme>gnuc -Wall -W exp.c

G:\toni\probleme>cl exp.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

exp.c
exp.c(16) : warning C4996: 'scanf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see
 declaration of 'scanf'
        Message: 'This function or variable may be unsafe. Consider using scanf_
s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
 for details.'
exp.c(17) : warning C4996: 'scanf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see
 declaration of 'scanf'
        Message: 'This function or variable may be unsafe. Consider using scanf_
s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
 for details.'
exp.c(19) : warning C4996: 'scanf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see
 declaration of 'scanf'
        Message: 'This function or variable may be unsafe. Consider using scanf_
s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
 for details.'
exp.c(82) : warning C4996: 'freopen' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(245) : see
 declaration of 'freopen'
        Message: 'This function or variable may be unsafe. Consider using freope
n_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online he
lp for details.'
exp.c(83) : warning C4996: 'freopen' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(245) : see
 declaration of 'freopen'
        Message: 'This function or variable may be unsafe. Consider using freope
n_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online he
lp for details.'
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:exp.exe
exp.obj

La fel pe linux:
Cod:
[email protected] ~$ gcc -Wall -W exp.c
[email protected] ~$

@cosmin. Vezi ca ce lucrezi tu cu pointeri este destul de periculos in C. C-ul este mult mai strict in majoritatea lucrurilor, mai ales la pointeri. Sincer nu stiu unde gresesti, dar intr-un concurs poate fi naspa chestia asta Neutral. E bine sa inveti si sa nu mai gresesti alta data. Pe borland iti merge cu testele de la oji?


Toni
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #19 : Februarie 02, 2009, 17:15:01 »


@wefgef.  Sursa este corecta din punct de vedere a sintaxei C-ului. Dupa ce m-am uitat pe ea, am compilat-o cu cele 3 compilatoare pe windows (gcc = DJGPP C, gnuc e MinGw C si cl e Visual C), cu warning-uri si nu crapa.
Cod:
G:\toni\probleme>gcc -Wall -W exp.c

G:\toni\probleme>gnuc -Wall -W exp.c

G:\toni\probleme>cl exp.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

exp.c
exp.c(16) : warning C4996: 'scanf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see
 declaration of 'scanf'
        Message: 'This function or variable may be unsafe. Consider using scanf_
s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
 for details.'
exp.c(17) : warning C4996: 'scanf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see
 declaration of 'scanf'
        Message: 'This function or variable may be unsafe. Consider using scanf_
s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
 for details.'
exp.c(19) : warning C4996: 'scanf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see
 declaration of 'scanf'
        Message: 'This function or variable may be unsafe. Consider using scanf_
s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
 for details.'
exp.c(82) : warning C4996: 'freopen' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(245) : see
 declaration of 'freopen'
        Message: 'This function or variable may be unsafe. Consider using freope
n_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online he
lp for details.'
exp.c(83) : warning C4996: 'freopen' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(245) : see
 declaration of 'freopen'
        Message: 'This function or variable may be unsafe. Consider using freope
n_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online he
lp for details.'
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:exp.exe
exp.obj

La fel pe linux:
Cod:
[email protected] ~$ gcc -Wall -W exp.c
[email protected] ~$

@cosmin. Vezi ca ce lucrezi tu cu pointeri este destul de periculos in C. C-ul este mult mai strict in majoritatea lucrurilor, mai ales la pointeri. Sincer nu stiu unde gresesti, dar intr-un concurs poate fi naspa chestia asta Neutral. E bine sa inveti si sa nu mai gresesti alta data. Pe borland iti merge cu testele de la oji?


Toni

Da....atat pe borland cat si pe dev-cpp imi merge....problema e ca ar trebui sa mearga si pe infoarena pe c....tocmai de asta as vrea sa stiu unde gresesc aici.....deoaree nu as vrea sa mi se intrample la vre-un concurs....
Chestia interesanta aici (evaluatorul infoarena) este k ruleaza exact timpii pe teste ca si algoritmul trimis spre compilare cu cpp.....deci probabil problema este la afisare....
Memorat
shnako
Client obisnuit
**

Karma: 3
Deconectat Deconectat

Mesaje: 50



Vezi Profilul
« Răspunde #20 : Februarie 18, 2009, 09:45:49 »

Cu aceasta sursa, pe evaluatorul de la OJI iau maxim iar pe infoarena iau 0 Brick wall. Incorect pe toate testele Brick wall Am compilat cu C++, asa ca nu e aceeasi problema ca mai sus.
Dau o bere la cine imi spune de ce iau 0....

Cod:
...

[editat de moderator] Ai primit ajutor, acum sursa ta intreaga nu-si mai are pe rostul forum. Poti trimite mesaj personal utilizatorilor dornici sa te ajute daca mai ai nevoie.
[editat de alt moderator]  "nu isi mai are rostul pe forum" suna mai romaneste Smile
« Ultima modificare: Februarie 18, 2009, 16:32:42 de către Savin Tiberiu » Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #21 : Februarie 18, 2009, 11:49:04 »

poate nu e de la ce zic eu... dar initializeaza manual cu for-uri vectorii aia... poate nu functioneaza bine memset() pe g++... eu tot timpul fac cu for-uri ca e mai sigur...

PS: mai ai de dat o bere... sala 82  wink
Memorat
shnako
Client obisnuit
**

Karma: 3
Deconectat Deconectat

Mesaje: 50



Vezi Profilul
« Răspunde #22 : Februarie 18, 2009, 13:56:16 »

M-am gandit si eu la asta dar nu e memsetu de vina ...  sad
Alte idei ? Brick wall

P.S. pt manu: Eu am in 74, cum de nu te-am vazut niciodata ? Eh?
Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #23 : Februarie 18, 2009, 16:00:32 »

scapa de sw=1 si break... nu are sens intructiunea aia... cand sw=1 afisezi direct 0 si return 0... daca iti trece de faza aia, faci afisarea ca si tine... am modificat in sursa ta, uite asa:
Cod:
for (i=1;i<=k;i++)
if (w[i]%m!=0)
    {
fprintf (g, "0\n");
return 0;
}
fprintf(g, "1\n");
for (i=1;i<=k;i++)
  if (w[i])
  fprintf(g, "%ld %ld\n", z[i], w[i]/m);
fcloseall();
return 0;
}


si am luat 100  peacefingers
Memorat
shnako
Client obisnuit
**

Karma: 3
Deconectat Deconectat

Mesaje: 50



Vezi Profilul
« Răspunde #24 : Februarie 18, 2009, 21:18:03 »

Ms mult  Yahoo!
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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