infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Adrian Diaconu din August 14, 2007, 10:12:40



Titlul: 485 Exp
Scris de: Adrian Diaconu din August 14, 2007, 10:12:40
Aici puteţi discuta despre problema Exp (http://infoarena.ro/problema/exp).


Titlul: Răspuns: 485 Exp
Scris de: Ionescu Vlad din 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?


Titlul: Răspuns: 485 Exp
Scris de: Florian Marcu din 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!  :thumbup:


Titlul: Răspuns: 485 Exp
Scris de: Ionescu Vlad din 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))


Titlul: Răspuns: 485 Exp
Scris de: Florian Marcu din 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 ].


Titlul: Răspuns: 485 Exp
Scris de: Musoiu Tudor din 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(  :oops: ) si tot 80 am luat...


Titlul: Răspuns: 485 Exp
Scris de: Florian Marcu din 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(  :oops: ) 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


Titlul: Răspuns: 485 Exp
Scris de: Musoiu Tudor din Februarie 24, 2008, 01:19:51
nu imi dau seama... ](*,)...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; ](*,) cum sa fac sa se incadreze? ](*,)  :-k


Titlul: Răspuns: 485 Exp
Scris de: Florian Marcu din 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.


Titlul: Răspuns: 485 Exp
Scris de: Vlad Fisca din Martie 02, 2008, 09:55:58
Ce inseamna m-ul acela din fata?Inmultire?


Titlul: Răspuns: 485 Exp
Scris de: Florian Marcu din Martie 02, 2008, 10:49:38
E gradul radicalului.


Titlul: Răspuns: 485 Exp
Scris de: Petcu Marius din Aprilie 29, 2008, 20:37:31
Ce inseamna m-ul acela din fata?Inmultire?
 
radical de gradul m din nm = n


Titlul: Răspuns: 485 Exp
Scris de: Andrei Misarca din Aprilie 29, 2008, 21:17:30
Citat
radical de gradul m din nm = n
Nu neaparat :)
radical de ordinul 2 din (-2)2 = 2, nu cu -2


Titlul: Răspuns: 485 Exp
Scris de: Cosmin-Mihai Tutunaru din 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


Titlul: Răspuns: 485 Exp
Scris de: Andrici Cezar din Noiembrie 26, 2008, 17:09:00
cine imi zice si mie cum arata testul 2 sau e acelasi ca si la OJI?


Titlul: Răspuns: 485 Exp
Scris de: Cosmin-Mihai Tutunaru din 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:


Titlul: Răspuns: 485 Exp
Scris de: Andrei Grigorean din 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 :thumbup:


Titlul: Răspuns: 485 Exp
Scris de: Cosmin-Mihai Tutunaru din 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 :thumbup:

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  :oops:. 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 :thumbup:

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


Titlul: Răspuns: 485 Exp
Scris de: Pripoae Teodor Anton din 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:
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


Titlul: Răspuns: 485 Exp
Scris de: Cosmin-Mihai Tutunaru din 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:
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....


Titlul: Răspuns: 485 Exp
Scris de: Vlad Schnakovszki din 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....

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 :)


Titlul: Răspuns: 485 Exp
Scris de: Emanuel Cinca din 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:


Titlul: Răspuns: 485 Exp
Scris de: Vlad Schnakovszki din Februarie 18, 2009, 13:56:16
M-am gandit si eu la asta dar nu e memsetu de vina ...  :sad:
Alte idei ? ](*,)

P.S. pt manu: Eu am in 74, cum de nu te-am vazut niciodata ? :-s


Titlul: Răspuns: 485 Exp
Scris de: Emanuel Cinca din 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:


Titlul: Răspuns: 485 Exp
Scris de: Vlad Schnakovszki din Februarie 18, 2009, 21:18:03
Ms mult  :yahoo:


Titlul: Răspuns: 485 Exp
Scris de: Alexandru-Iancu Caragicu din Martie 10, 2009, 18:51:42
Nu. Inseamna ordinul radicalului.

O. Exista si pagina 2 de comentarii...

[edit] la fel ca si butonul de editare a mesajelor; nu mai posta consecutiv

[Later edit] Eu am postat direct de pe http://infoarena.ro/problema/exp (http://infoarena.ro/problema/exp), deci din afara forum-ului. Acolo nu exista buton de editare, de aceea nu l-am gasit. Ar trebui adaugat si acolo.


Titlul: Răspuns: 485 Exp
Scris de: Cristian Zloteanu din Noiembrie 18, 2009, 10:07:48
Puteti sa-mi dati niste teste, va rog? cat mai urate


Titlul: Răspuns: 485 Exp
Scris de: Vlad Eugen Dornescu din Noiembrie 18, 2009, 16:25:27
aici iau 40 puncte din 100 pct. si la eval oji 2006 iau 100 pucte. ](*,)


Titlul: Răspuns: 485 Exp
Scris de: Simoiu Robert din Februarie 06, 2010, 11:33:45
La evaluatorul OJI iau 100 pct. usor, dar aici imi da TLE pe primul test,pe al doilea imi da 32ms. Care ar fi problema? Am facut intr-un vector de constante toate nr. prime , apoi am desc. fiecare nr. X in factori primi pana la sqrt.x, si apoi am parcurs pentru erori.
[Later Edit] Am rezolvat cu citire parsata si cu inca cateva modificari :)

aici iau 40 puncte din 100 pct. si la eval oji 2006 iau 100 pucte. ](*,)
E ok rezolvarea, aici se pune accent pe timp (prea mult), limita ar trebui sa fie cel putin 0,2 secunde. Daca iti da Ok pe evaluator, inseamna ca ai facut ok problema.  :ok:


Titlul: Răspuns: 485 Exp
Scris de: Gabriel Bitis din Februarie 06, 2010, 23:20:32
aici iau 40 puncte din 100 pct. si la eval oji 2006 iau 100 pucte. ](*,)
E ok rezolvarea, aici se pune accent pe timp (prea mult), limita ar trebui sa fie cel putin 0,2 secunde. Daca iti da Ok pe evaluator, inseamna ca ai facut ok problema.  :ok:

Nu se pune prea mult accent pe timp. Daca o rezolvare care ia 100 pe un eval de la oji, pe infoarena ia doar 40 inseamna ca cineva a gasit o rezolvare mai buna, mai rapida, si n'ar strica sa o descoperi ca nu ai decat de invatat din asta. Daca te multumesti cu putin, e decizia ta.
De exemplu bublesort si qsort fac acelasi lucru, sorteaza la fel de corect, doar ca unul merge in O(N^2) altul in O(NlogN). Vei avea foarte mult de pierdut daca te multumesti doar cu buble, ca doar acelasi rezultat ti'l da.. dar un pic mai lent.


Titlul: Răspuns: 485 Exp
Scris de: Simoiu Robert din Februarie 07, 2010, 10:56:20
Da , asta asa este. Dar un incepator, care face aceasta problema ca si la OJI, nu cred ca ar putea rezolva problema in alt mod. Sper exemplu problema Al k-lea termen Fibonacci, se poate rezolva usor, dar metoda optima e cea cu matrice. Nu cred ca multi stiu operatii cu matrice  :ok:


Titlul: Răspuns: 485 Exp
Scris de: Florian Marcu din Februarie 07, 2010, 11:08:20
Nu cred ca multi stiu operatii cu matrice  :ok:
Cei care nu stiu inmultirea a doua matrice, ar trebui sa termine culegerea de info de la clasa, si abia apoi sa tasteze in browser "infoarena.ro".  :wink:


Titlul: Răspuns: 485 Exp
Scris de: Simoiu Robert din Februarie 07, 2010, 11:19:39
Eu ma refeream la cei de clasele mai mici  :wink:


Titlul: Răspuns: 485 Exp
Scris de: Paul Buda din Septembrie 21, 2010, 17:06:29
imi poate ajuta cineva
pe evaluatorul de la oji 2004 iau 100p si aici iau 40p cu incorect 
de ce ?](*,)


Titlul: Răspuns: 485 Exp
Scris de: Simoiu Robert din Septembrie 22, 2010, 13:53:08
Aici sunt cateva teste in plus fata de OJI, un pic mai mari. Ai de grija mare la limite .  :thumbup:


Titlul: Răspuns: 485 Exp
Scris de: Bodnariuc Dan Alexandru din Noiembrie 07, 2011, 21:50:11
imi da 80 de pct  pe infoarena si pe campion.edu.ro imi da 100 nu iau time limit exeded ci incorect pe testele 1 si 2
help  :readthis:


Titlul: Răspuns: 485 Exp
Scris de: Simoiu Robert din Noiembrie 07, 2011, 21:53:15
Sunt teste mai mari, incearca ciurul lui eratosthenes pentru ele (nu sunt testele de la OJI, din cate tin minte sunt puse de pe InfoArena).


Titlul: Răspuns: 485 Exp
Scris de: Nicu B. din Martie 07, 2013, 17:02:24
Iau 90 cu TLE pe primul test, pe al doilea am 24ms cel mai bine. Idei de optimizare ?:-s


Titlul: Răspuns: 485 Exp
Scris de: Visan Radu din Martie 07, 2013, 18:24:57
Eu luam 90 cu TLE daca faceam descompunerea in factori primi pt un numar N for(int i = 2; i * i <= N; ++ i), dar daca tratam separat cazul cu i = 2, iar mai apoi for(i = 3; i * i <= N; i += 2) intra in timp.


Titlul: Răspuns: 485 Exp
Scris de: Alex Velea din Martie 07, 2013, 18:35:55
Am luat 100 parsand citirea  :rotfl:

Citat
Eu am facut euler prima data.
Am retinut divizorii.
Cand descompuneam un numar luam doar numerele prime nu orice numere.

Nu a mers.

Citat
Apoi, in loc de sirul Viz la eular tineam pt fiecare numar factorul prim maxim care apare in descompunerea sa.
Pt 666013 tineam 666013 de exemplu .. ( stiu ca erau pana la 30.000 ).
Asta credeam ca o sa ajute.

Dar nu! Desi e o idee buna :D

Citat
Cand faci euler poti sa iti faci si descompunerea in factori primi.
Asa ar trebui sa iti iasa in o(1) queryul

MLE
Un vector( doar daca il declari ) ocupa 10 octeti ( 2,5 inturi )
Ocupa 700 bks vectorul de descompunere din care 400kbs doar faptul ca il declaram.
Iarasi o idee buna dar care nu merge :))


Titlul: Răspuns: 485 Exp
Scris de: Dragos din Mai 29, 2014, 11:10:09
Imi puteti oare spune de ce la testul 1 primesc TLE orice as face ? ](*,)


Titlul: Răspuns: 485 Exp
Scris de: Pruna Stefania din Mai 29, 2014, 13:37:45
Ma poate ajuta cineva si pe mine cu acesta problema ?
 
Cerinţa

Se dă un şir cu n elemente, numere naturale. Să se verifice dacă reprezintă o permutare a mulţimii {1,2,...,n}.
Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.
Date de ieşire

Programul afișează pe ecran mesajul DA, dacă şirul reprezintă o permutare a mulţimii {1,2,...,n}, respectiv NU în caz contrar.
Restricţii şi precizări

    1 ≤ n ≤ 100


Titlul: Răspuns: 485 Exp
Scris de: Pirtoaca George Sebastian din Mai 29, 2014, 18:19:18
Verifici, folosind un vector caracteristic, daca fiecare element intre 1 si N inclusiv apare in sir o data si numai o data.


Titlul: Răspuns: 485 Exp
Scris de: Pruna Stefania din Mai 30, 2014, 19:09:33
     #include<iostream>
    using namespace std;
    int v[101],n,i,j,p;
    int main()
    {
     
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>v;
    for(i=1;i<=n;i++)
    for(j=i+1;j<=n;j++)
    if(v>v[j] )
    {
    int aux=v;
    v=v[j];
    v[j]=aux;
    }
    if(v=i)
    p=1;
    for(i=1;i<=n;i++)
    if(v!=i) p=0;
    if(p==1) cout<<"da";
    else cout<<"nu";
    return 0;
    }

Eu ma gandisem asa, dar nu este bine
Ce ar trebui sa adug sau sa modific?
Sincera sa fiu nu prea ma pricep, asa ca , va rog, nu ma judecati daca am scris o mare tampenie mai sus


Titlul: Răspuns: 485 Exp
Scris de: Ardelean Adrian-Florin din Martie 06, 2015, 10:13:48
De ce imi da pe primul test time limit exceeded? :D
Aveti vreo idee? :)


Titlul: Răspuns: 485 Exp
Scris de: Lucian Maciuca din Decembrie 07, 2015, 19:09:42
Faina problema   :) :)


Titlul: Răspuns: 485 Exp
Scris de: Razvan Dumitru din Februarie 12, 2016, 17:19:00
http://www.infoarena.ro/job_detail/1598125

Nu inteleg ce e gresit  ](*,), ma ajuta cineva  :'(?


Titlul: Răspuns: 485 Exp
Scris de: Andrei Udriste din Martie 06, 2017, 10:15:42
salut. stie cineva care e diferenta dintre urmatoarele 2 surse?

http://www.infoarena.ro/job_detail/1905375
http://www.infoarena.ro/job_detail/1905376

liniile de cod care fac diferenta ar fi:

Cod:
for(int i = 0; prime[i] * prime[i] <= number; i++){
    while(number % prime[i] == 0){
        factor[prime[i]]++;
        number /= prime[i];
    }
}

si

Cod:
while(number % 2 == 0){
    factor[2]++;
    number /= 2;
}
for(int i = 3; i * i <= number; i += 2){
    while(number % i == 0){
        factor[i]++;
        number /= i;
    }
}

in prima varianta iteram numai prin numere prime pana la
radical din x, crezand ca e o idee mai buna. aproape ca iasa
din limita de timp, cand ma asteptam sa scot unul mai bun.
nu inteleg de ce e asa..