•DITzoneC
|
|
« : August 14, 2007, 10:12:40 » |
|
Aici puteţi discuta despre problema Exp.
|
|
|
Memorat
|
|
|
|
•Dastas
|
|
« 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
|
|
« 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!
|
|
« Ultima modificare: August 15, 2007, 08:57:36 de către Marcu Florian »
|
Memorat
|
|
|
|
•Dastas
|
|
« 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
|
|
« 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
Mesaje: 10
|
|
« 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( ) si tot 80 am luat...
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« 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( ) 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
Mesaje: 10
|
|
« Răspunde #7 : Februarie 24, 2008, 01:19:51 » |
|
nu imi dau seama... ...am facut cu numerele prime precalculate si pentru a-l descompune pe X fac: 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; cum sa fac sa se incadreze?
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« 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: 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
Mesaje: 21
|
|
« Răspunde #9 : Martie 02, 2008, 09:55:58 » |
|
Ce inseamna m-ul acela din fata?Inmultire?
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #10 : Martie 02, 2008, 10:49:38 » |
|
E gradul radicalului.
|
|
|
Memorat
|
|
|
|
•marius21
Strain
Karma: -20
Deconectat
Mesaje: 27
|
|
« Răspunde #11 : Aprilie 29, 2008, 20:37:31 » |
|
Ce inseamna m-ul acela din fata?Inmultire?
radical de gradul m din n m = n
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #12 : Aprilie 29, 2008, 21:17:30 » |
|
radical de gradul m din nm = n Nu neaparat radical de ordinul 2 din (-2) 2 = 2, nu cu -2
|
|
|
Memorat
|
|
|
|
•stocarul
|
|
« 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/230175Sursa mea este urmatoarea: [edit] am scos sursa
|
|
« Ultima modificare: Februarie 18, 2009, 16:09:38 de către Sima Cotizo »
|
Memorat
|
|
|
|
•andrici_cezar
|
|
« 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
|
|
« 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/230175Sursa mea este urmatoarea: 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?
|
|
« Ultima modificare: Februarie 18, 2009, 16:09:54 de către Sima Cotizo »
|
Memorat
|
|
|
|
•wefgef
|
|
« 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 . Oricum, am trimis sursa ta cu extensia cpp si am luat 100
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•stocarul
|
|
« 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 . Oricum, am trimis sursa ta cu extensia cpp si am luat 100 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 ) 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 . 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 . Oricum, am trimis sursa ta cu extensia cpp si am luat 100 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
|
|
« 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. 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: TONY@tony ~$ gcc -Wall -W exp.c TONY@tony ~$
@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 . E bine sa inveti si sa nu mai gresesti alta data. Pe borland iti merge cu testele de la oji? Toni
|
|
|
Memorat
|
|
|
|
•stocarul
|
|
« 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. 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: TONY@tony ~$ gcc -Wall -W exp.c TONY@tony ~$
@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 . 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
Mesaje: 50
|
|
« Răspunde #20 : Februarie 18, 2009, 09:45:49 » |
|
Cu aceasta sursa, pe evaluatorul de la OJI iau maxim iar pe infoarena iau 0 . Incorect pe toate testele Am compilat cu C++, asa ca nu e aceeasi problema ca mai sus. Dau o bere la cine imi spune de ce iau 0.... [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
|
|
« Ultima modificare: Februarie 18, 2009, 16:32:42 de către Savin Tiberiu »
|
Memorat
|
|
|
|
•c_e_manu
|
|
« 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
|
|
|
Memorat
|
|
|
|
•shnako
Client obisnuit
Karma: 3
Deconectat
Mesaje: 50
|
|
« Răspunde #22 : Februarie 18, 2009, 13:56:16 » |
|
M-am gandit si eu la asta dar nu e memsetu de vina ... Alte idei ? P.S. pt manu: Eu am in 74, cum de nu te-am vazut niciodata ?
|
|
|
Memorat
|
|
|
|
•c_e_manu
|
|
« 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: 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
|
|
|
Memorat
|
|
|
|
•shnako
Client obisnuit
Karma: 3
Deconectat
Mesaje: 50
|
|
« Răspunde #24 : Februarie 18, 2009, 21:18:03 » |
|
Ms mult
|
|
|
Memorat
|
|
|
|
|