infoarena

infoarena - concursuri, probleme, evaluator, articole => Concursuri => Subiect creat de: Munteanu Alexandru din Februarie 26, 2005, 13:24:33



Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Februarie 26, 2005, 13:24:33
Care a fost de acii la clasa a9a? Subiectele mi s-au parut foarte usoare, si de aici apare problema, ca testele erau mari.. si eu nu stiam  ca exista parametri pt a sari peste limita vectorului intreg in pascal..  Acesta mi se pare un dezavantaj mare...La a doua pb nust cum faceai sa calculezi in timp de o sec pt cel mai rau caz.... eu am folosit pt divizori descompunere in factori primi si apoi calculam (puterea primului factor + 1 ) * .... Formula aceasta e mai rapida decat un for care imparte toate numerele de la 2 la jumatate... dar nu e suficient de rapida pt 10000 de numere f mari...


Titlul: Ce ati facut la judet???
Scris de: florin din Februarie 26, 2005, 16:26:32
Mersi lu Nash^ pentru link :
http://www.olimpiade.ro/informatii.php

Gasiti acolo subiecte shi mai ales evluatoare cu tot cu teste (pe mine m-au ajutat sa-mi dau seama ca sunt tampit )  ](*,)

In loc d semnatura : ](*,)  ](*,)  ](*,)


Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Februarie 26, 2005, 19:21:17
eu am luat locu I in judetul meu cu  70 pct, dar problema a fost ca n-am stiut de parametru ca sa largesc vectorul si am avut de pierdut.. Vi se parea normal sa se dea cu largire de vector??? Nu toata lumea stia...

Pt info yo folosesc site-ul http://olimpiade.info ... gasiti akolo toate inf despre aproape toate concursurile, olimps de info...


Titlul: Ce ati facut la judet???
Scris de: Anton Alexandru din Februarie 26, 2005, 22:48:25
Ce parametru de largire a vectorilor? daca te referi la problema numere de la clasa a 9-a se facea foarte usor cu operatii pe biti, cu un vector de char de lungime 31250.!!!

Cod:
nr[xx >> 3] |= (1 << (xx & 7))
cam asa ceva setam bitul de pe pozitia xx & 7 cu 1 daca xx aparea in matrice iar in final se verifica
daca
Cod:
nr[xx >> 3] & (1 << (xx & 7))  == 0
atunci xx a fost inlocuit in matrice cu 0. pare mult mai simplu!!!

( ptr alte detalii vedeti articolul cu Ciurul lui Eratostene, unde autorul explica foarte bne. Thanks Man)


Titlul: Ce ati facut la judet???
Scris de: Cosmin Negruseri din Februarie 26, 2005, 23:05:07
Cu placere :), ne bucuram si noi sa vedem ca articolele va ajuta.


Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Februarie 27, 2005, 09:39:23
da din pcate nu exista asa ceva in pascal...:( trebuia sa stiu parametru {R+} sau nu mai stiu exact.. ce parametru e,... oricum pt nationala o sa studiez toti parametrii..

pS: ma puteti ajuta cu lista de parametri pt PASCAL?


Titlul: Ce ati facut la judet???
Scris de: Valentin Stanciu din Februarie 27, 2005, 10:34:53
Citat din mesajul lui: malex
da din pcate nu exista asa ceva in pascal...:( trebuia sa stiu parametru {R+} sau nu mai stiu exact.. ce parametru e,... oricum pt nationala o sa studiez toti parametrii..


oricum pt nationala o sa ai free-pascal!


Titlul: Ce ati facut la judet???
Scris de: florin din Februarie 27, 2005, 11:10:26
Citat din mesajul lui: malex
da din pcate nu exista asa ceva in pascal...:( trebuia sa stiu parametru {R+} sau nu mai stiu exact.. ce parametru e,... oricum pt nationala o sa studiez toti parametrii..


Cauta in Borland (in index) 'SHL' -> 'Shift Left Operator ' , este acelasi lucru ca si << , 'SHR'  este acelasi lucru ca si  >>, in loc d & , | , |= ,folosesti respectiv and, or ,xor , deci ai EXACT acelsi lucru in pascal.
Problema e ca trebe sa shtii tu Pascal shi mai ales sa manipulezi bitii.
Shi oricum ar fi bine sa shtii toti parametri , mai ales cei despre coprocesor
{$E+} ,{$N+}, despre mem {$M ...},mai ales dak faci in Borland.


Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Februarie 27, 2005, 15:29:48
dar vreau sa stii daca am voie sa folosesc parametrii astia tot timpu? nu poti sa-i interzica, sau mai rau sa nu-i vada compilatoru si sa dea eroare si sa pierd toate punctele??? In FreePascal daca compileaza ei cu parametri da vreo eroare?? IS THIS TOTAL SAFE??


Titlul: Ce ati facut la judet???
Scris de: florin din Februarie 27, 2005, 18:47:13
Parametrii d compilare ai voie sa folosesti ,ai grija la specificatiile d mem ale concursului (unele evaluatoare NU te lasa sa iesi din mem) asa ca ai grija cu directiva {$M ...} in rest nu cred ca o sa-ti interzica vreodata cineva sa foloseshti {$I} {$R} {$E} {$N} ,... s.a.m.d.
In orice caz acum poti folosi orice directiva (grija inca ca unele difera  intre freepascal si BP ).


Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Februarie 27, 2005, 21:58:50
pai la OJI nici macar nu a afisat memoria, ca sa stiu si eu pana unde se duce stiva, ca daq era mai mare poate puteam citi pana la sfarsit vectoru, insa n-am riscat sa-mi dea vreo eroare de memorie si sa pierd toate testele..


Titlul: Ce ati facut la judet???
Scris de: P3riutz@ din Martie 01, 2005, 11:32:43
Mah care ma ajutati si pe mine sa-mi explicati cum se putea rezolva problema de la cls a 9-a MAXD.
Mi-am scos de pe www.olimpiade.ro evaluatorul si testele si tot nu pot pricepe un algoritm care sa poata sa scoata intr-o sec rezultatul pt anumite teste.
       Am facut 20 de puncte la prob asta la olimpiada. Problema cealalta NUMERE o fost destul de simpla.
       Pls help me !!!


Titlul: Ce ati facut la judet???
Scris de: florin din Martie 01, 2005, 23:24:40
Citat
pai la OJI nici macar nu a afisat memoria, ca sa stiu si eu pana unde se duce stiva, ca daq era mai mare poate puteam citi pana la sfarsit vectoru, insa n-am riscat sa-mi dea vreo eroare de memorie si sa pierd toate testele..


pai daq ai folosit pascal: stiva era cat ai specificat-o tu (implicit 16384) Shtii tu Options->Memory sizes->Real Target -> Stack(Alt+O,Alt+M) poti sa modifici shi d acolo ,dar daq vrei sa se compileze cu memoria care o vrei tu trebuie sa foloseshti {$M ...} ,neaparat !!!
Exista anumite limite d mem la Borland pascal, trebe sa citeshti in help la folosirea {$M ...}.

Citat
Mah care ma ajutati si pe mine sa-mi explicati cum se putea rezolva problema de la cls a 9-a MAXD.


Solutiile oficiale la probleme le gaseshti la http://olimpiada.info/oji2005/index.php?cid=arhiva impreuna cu evaluatoare shi teste shi ce mai vrei tu d la OJI !


Titlul: Ce ati facut la judet???
Scris de: P3riutz@ din Martie 02, 2005, 11:40:03
M-am uitat si acolo si tot nu m-am lamurit... Am implementat algoritmul asa cum zic ei si tot trece de 1 sec la numerele din unele teste. Ii adevarat ca ii mult mai bun algoritmu decat l-am gandit eu da tot nu ii perfect.
Care ati reusit sa rezolvati problema MaxD pt toate testele? Si cum?


Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Martie 02, 2005, 18:33:26
eu am facut o functie care determina pt fiecare nr nr de divizori.. la inceputul programului generezi toate nr prime intr-un vector .. pt fiecare nr care il accessezi in functie tot imparti din vector cat timp numarul tau e dif de 1 .. pe parcurs inmultesti in p dupa acea regula:) Acum in programul principal faci un for de la a la b si iei divizorul si in acelasi timp actualizezi ce iti trebuie, nr max de div, cel mai mic nr al respectivului divizor si de fiecare data cand gasesti un div mai mare resetezi contorul de divizori si iar incepi sa numeri:)

Eu la olimp am gresit la pb asta ca nu am facut toate astea intr-un for ci am parcurs de 2 ori vectoru cu divizori..


Titlul: Ce ati facut la judet???
Scris de: Valentin Stanciu din Martie 03, 2005, 08:26:55
Citat din mesajul lui: malex
la inceputul programului generezi toate nr prime intr-un vector

am o intrebare: parca numerele alea ajungeau la 2 miliarde; cat de multe nr prime sunt?!


Titlul: Ce ati facut la judet???
Scris de: Silviu-Ionut Ganceanu din Martie 03, 2005, 09:51:00
[-X Iti trebuie numerele prime pana la sqrt(2 * 10^9) pentru a gasi divizorii oricarui numar de la 1 la 2*10^9


Titlul: Ce ati facut la judet???
Scris de: Valentin Stanciu din Martie 03, 2005, 12:43:35
Citat din mesajul lui: silviug
[-X Iti trebuie numerele prime pana la sqrt(2 * 10^9) pentru a gasi divizorii oricarui numar de la 1 la 2*10^9


ah, ofcourse, dar din explicatia lui malex, nu era foarte clar...


Titlul: Ce ati facut la judet???
Scris de: Munteanu Alexandru din Martie 05, 2005, 18:26:31
aici se putea face o "magarie"  :twisted:  scriati intr-un fisier pe fiecare linie
a[1]:=2;
a[2]:=3;
.........

Dupa ce generati toate nr prime le scrieti in fisier ca si cum ati atribui vectorului.. Aveti grija cum le amplasati cat mai multe atribuiri pe o linii sa nu treaca limita de linii:)... Copiati apoi din fisierul generat in programul vostru, si erati scutiti de timpul pt generarea numerelor :D


Titlul: Ce ati facut la judet???
Scris de: Cristian Strat din Martie 05, 2005, 19:42:24
recomand celor cu inclinatii spre precomputate sa foloseasca
a
  • = {2, 3, 5, 7 ... };


Titlul: Ce ati facut la judet???
Scris de: Valentin Stanciu din Martie 05, 2005, 22:02:24
Citat din mesajul lui: wickedman
recomand celor cu inclinatii spre precomputate sa foloseasca
a
  • = {2, 3, 5, 7 ... };
asa e logic, dar cred ca malex lucreaza in pascal, altfel era a
  • =y, in loc de ":=" !


Titlul: Ce ati facut la judet???
Scris de: Cristian Strat din Martie 06, 2005, 00:32:32
Citat
pascal

s-a strigat pascal? pascal sa fie!  :)

Cod:

const
   a: array [0 .. 2] of integer = (0, 1, 2);


Titlul: Ce ati facut la judet???
Scris de: vladut.forum din Iulie 11, 2005, 20:25:13
Mah, ce tot zice-ti de memoria de la prima problema de la OJI..cla 9a. Un vector char de 60000 sau cat iti spuneau iei era indeajuns(io luasem 100). Si cat despre a doua era ceva de genu ciuru lui Eratosthne, nu-mi dadusem seama in proba de concurs, da isi daduse un coleg, si luase 100...