Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Durere umar AC Joint

Care este cea mai sanatoasa paine?

Zgomot ritmic ce urmeaza rotirea ...

Merita Lumix FZ82 in 2024?
 Nu pot activa Memory Integrity

Supratensiuni accidentale

Cuțit/ briceag drumetie

Cum am acces la o parte dintr-un ...
 Mother's Day

Recomandare aparat de vidat alime...

Izolatie exterioara casa parter P...

Cuvinte si expresii neclare
 Mod de lucru Purmo Tempco Digital...

Samsung S90C vs LG C3

Problema sunet RCS

Amortizor sertare bucatarie
 

Concurs

- - - - -
  • This topic is locked This topic is locked
90 replies to this topic

#19
msmihai

msmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 5,271
  • Înscris: 02.09.2006
a??*c
aracet

primele doua ?? trebuie sa fie neaparat "ra" . In continuare trebuie sa facem match dupa *c la expresia "cet" . Chiar daca am inlocui * cu "cet", ar ramane acel "c" de la final .
match = 0

Edited by msmihai, 09 September 2009 - 16:10.


#20
Ann0nim

Ann0nim

    Active Member

  • Grup: Members
  • Posts: 1,082
  • Înscris: 07.04.2008
Am o nelamurire.In enuntul problemei ai zis

Quote

candva Goldbach a afirmat, bazandu-se pe observatii ( nu exista nici pana in ziua de azi demonstratie ) , ca orice numar par mai mare ca 2 poate fi scris ca suma de doua numere prime
Deci este adevarat pentru orice numar par mai mare ca 2 sau mai sunt si unele exceptii??
Intreb asta pentru ca atunci cand testez programul,il pun sa imi afiseze si toate numerele pare din interval si sunt mai multe decat cele care pot fi scrise ca o suma de 2 nr prime.
Adica in intervalul 10,10000 pot fi 5000 de numere pare si din ele doar 4999 pot fi scrise ca o suma de 2 nr prime.Cel mai probabil (90%) am gresit eu dar daca nu...asta ar insemna ca exista o exceptie si atunci ma chinui degeaba sa il fac sa mearga.
Iar daca toate numerele pare mai mari ca 2 indeplinesc aceasta conditie ce m-ar opri sa fac un program care sa afiseze toate numerele pare din interval??

Edited by Ann0nim, 09 September 2009 - 17:59.


#21
msmihai

msmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 5,271
  • Înscris: 02.09.2006
Evident ai gresit tu. Din fericire ai sansa sa repari gresala ( fiind la inceput de concurs si toate alea ).

Quote

Iar daca toate numerele pare mai mari ca 2 indeplinesc aceasta conditie ce m-ar opri sa fac un program care sa afiseze toate numerele pare din interval??

Cerinta dom'le :D

Quote

Numerele trebuiesc obligatoriu verificate in memorie. Adica, pentru fiecare numar par, trebuie verificat faptul ca acesta poate fi scris ca suma de numere prime.  Nu este necesara si afisarea acestora( intrucat scrierea in consola ar dura mult ), dar verificarea trebuie sa existe in program.

De ce crezi ca as mai fi dat problema daca se rezolva atat de simplu ?

Edited by msmihai, 09 September 2009 - 18:00.


#22
rickysyv

rickysyv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,620
  • Înscris: 08.03.2008
In legatura cu masurarea timpului de executie functia GetTickCount este total nepotrivita din cauza aproximarii grosolane. Fiecare "Tick" se executa de maximum 18 ori pe secunda deci practic precizia functiei este limitata la 1 / 18 =~ 55 de milisecunde ceea ce este enorm cand vine vorba de masurat optimizarea unui algoritm. Sugerez folosirea functiei QueryPerformanceCounter care are precizia de o microsecunda (10^-6 secunde):

LARGE_INTEGER lStart, lStop, lFrequency;
DOUBLE Elapsed;
QueryPerformanceFrequency((LARGE_INTEGER *)&lFrequency);
QueryPerformanceCounter((LARGE_INTEGER *)&lStart);
getGoldbachCount(); // apelul functiei pe care o contorizati
QueryPerformanceCounter((LARGE_INTEGER *)&lStop);
Elapsed=(lStop-lStart) * 1000 / lFrequency

Elapsed va contine timpul executiei masurat in milisecunde (pentru ca am inmultit cu 1000).

#23
vali38

vali38

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 16.10.2005
in concluzie, cum e mai bine sa verificam timpul ?
am creat algoritmul insa nu am cum sa il optimizez pentru ca nu stiu unde sa vad timpul de executie
PS: cu gettickcount imi returneaza valoarea zero. eu am incercat cu time(null) din time.h apoi am facut diferenta si imi dadea zero

Edited by vali38, 09 September 2009 - 18:48.


#24
msmihai

msmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 5,271
  • Înscris: 02.09.2006
Pentru m si n mici, normal ca iti da 0. Creste putin valorile ( la ordinul zecilor, sutelor de mii si apoi vezi ce-ti mai afiseaza ). Oricare din metode functioneaza, fiecare cu precizia sa.

#25
Ann0nim

Ann0nim

    Active Member

  • Grup: Members
  • Posts: 1,082
  • Înscris: 07.04.2008

View Postmsmihai, on 9th September 2009, 19:54, said:

Pentru m si n mici, normal ca iti da 0. Creste putin valorile ( la ordinul zecilor, sutelor de mii si apoi vezi ce-ti mai afiseaza ). Oricare din metode functioneaza, fiecare cu precizia sa.
se va masura cat dureaza apelul functiei getGoldbachCount() sau tot programul??

#26
luk4

luk4

    Senior Member

  • Grup: Senior Members
  • Posts: 2,149
  • Înscris: 29.04.2008
Pacat ca este numai pentru C++... -_-

#27
msmihai

msmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 5,271
  • Înscris: 02.09.2006

Quote

se va masura cat dureaza apelul functiei getGoldbachCount() sau tot programul??

Cerinta este sa scrii functia . Programul consta in apelarea functiei. In sursa ta , poti include ce mai vrei tu, dar trebuie sa contina neaparat functia getGoldbachCount. Ea va fi masurata.

#28
4nDr3i

4nDr3i

    Senior Member

  • Grup: Senior Members
  • Posts: 2,114
  • Înscris: 24.04.2006
Cred că am testat-o destul :)
Aceasta este soluția mea.
Attached File  GoldbachNumbers_4nDr3i_c__.rar   726bytes   16 downloads

#29
broscutza1221

broscutza1221

    New Member

  • Grup: Members
  • Posts: 14
  • Înscris: 07.02.2007
O intrebare:

Trebuie sa folosim neaparat antetul functiei din cerinta? ...pentru ca in cerinta e int getGoldbachCount(unsigned int m,unsigned int n) si din cate stiu eu, int merge pana la 32767.

#30
secretalex92

secretalex92

    Active Member

  • Grup: Members
  • Posts: 1,496
  • Înscris: 28.12.2008

View Postbroscutza1221, on 9th September 2009, 21:04, said:

O intrebare:

Trebuie sa folosim neaparat antetul functiei din cerinta? ...pentru ca in cerinta e int getGoldbachCount(unsigned int m,unsigned int n) si din cate stiu eu, int merge pana la 32767.
pe linux int  este acelasi cu long.
Pentru problema wildcards:

Attached Files



#31
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,253
  • Înscris: 24.02.2007
int mergea pana la 32767 acum 20 de ani cand se foloseau compilatoare pe 16 bit.
Pe 32 bit unsigned int merge intre 0 si 4294967295

#32
Ann0nim

Ann0nim

    Active Member

  • Grup: Members
  • Posts: 1,082
  • Înscris: 07.04.2008
Am terminat si eu Attached File  Concurs_Ann0nim.rar   699bytes   5 downloads
am testat pana la 10.000.000

EDIT:Parola e aceeasi..ca sa nu mai trimit mail degeaba

LE:

Quote

Fiecare runda tine 7 zile . Dupa 7 zile sunt afisate rezultatele si sunt postate cele mai bune solutii. Speram sa nu fie cazul "contestatiilor"
( incercam totusi sa evaluam cat mai obiectiv posibil) .
Chiar o sa dureze sapte zile??Ma gandeam ca e prea mult pentru o singura problema.Poate mai dati cateva...

Avem voie sa folosim SetPriorityClass()?? :rolleyes:

Edited by Ann0nim, 09 September 2009 - 20:27.


#33
NumeDeCod

NumeDeCod

    Active Member

  • Grup: Senior Members
  • Posts: 1,544
  • Înscris: 11.03.2005

View Postneagu_laurentiu, on 9th September 2009, 12:43, said:

Nu-s organizator dar ca idee (pt. cine vrea precizie milimetrica - nu e cazul in acest concurs): compilatorul genereaza instructiuni procesor (ASM). Fiecare astfel de instructiune are un timp precis de executie si-s documentate de producatorul procesorului. Deci e suficienta o analiza a codului .asm pentru a afla eficienta.
In felul asta masori lungimea codului binar, nu durata de executie. Poti face un loop infinit cu trei bytes de ASM :D

View Postrickysyv, on 9th September 2009, 19:10, said:

In legatura cu masurarea timpului de executie functia GetTickCount este total nepotrivita din cauza aproximarii grosolane. Fiecare "Tick" se executa de maximum 18 ori pe secunda deci practic precizia functiei este limitata la 1 / 18 =~ 55 de milisecunde ceea ce este enorm cand vine vorba de masurat optimizarea unui algoritm.
Performance counteru il ai doar pe platforme windows NT. Ce zici tu despre GetTickCount e valabil pentru Windows 98 si mai vechi. Pe Win >= XP, GetTickCount are ce-i drept o precizie proasta, dar nu e de 55 ms ci de 10-15 ms (depinde de hardware si service pack).

View PostAnn0nim, on 9th September 2009, 21:15, said:

Avem voie sa folosim SetPriorityClass()?? :rolleyes:
Nu fac parte din comisie dar ma indoiesc ca te lasa sa folosesti api-uri specifice OS-ului. Asta trecand peste tentativa explicita de accelerare artificiala a procesului.

#34
4nDr3i

4nDr3i

    Senior Member

  • Grup: Senior Members
  • Posts: 2,114
  • Înscris: 24.04.2006

View PostAnn0nim, on 9th September 2009, 21:15, said:

Chiar o sa dureze sapte zile??Ma gandeam ca e prea mult pentru o singura problema.Poate mai dati cateva...

Avem voie sa folosim SetPriorityClass()?? :rolleyes:

și vrei deja altă problemă ? poate nu sunt toți la fel de ingenioși ca tine :)

#35
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,628
  • Înscris: 30.07.2003

View PostNumeDeCod, on 9th September 2009, 22:41, said:

Poti face un loop infinit cu trei bytes de ASM :D
Se poate si asta :D
Dar lungimea codului nu e relevanta, pot avea cod mult care se executa mai repede decat unul scurt. C++Builder genereaza cod scurt pentru calcule float/double dar care dureaza foarte mult in comparatie cu ce obtine VC++ unde codul asm e mai lung (C++Builder inca nu a auzit de noile procesoare, a ramas saracu' in urma rau).

Edited by neagu_laurentiu, 09 September 2009 - 22:02.


#36
Ann0nim

Ann0nim

    Active Member

  • Grup: Members
  • Posts: 1,082
  • Înscris: 07.04.2008

View PostNumeDeCod, on 9th September 2009, 22:41, said:

Nu fac parte din comisie dar ma indoiesc ca te lasa sa folosesti api-uri specifice OS-ului. Asta trecand peste tentativa explicita de accelerare artificiala a procesului.

ma gandeam ca daca tot foloseam GetTickCount() avem voie si alte API-uri
EDIT:Ma gandeam sa fac asta la olimpiada.Oare am voie??Pentru ca am vazut prin help-ul la Borland ca pot apela functii API :naughty:

View Post4nDr3i, on 9th September 2009, 22:54, said:

?i vrei deja altă problemă ? poate nu sunt to?i la fel de ingenio?i ca tine :)
Pe prima nu am rezolvat-o(decat 60-70%) deci nu sunt deloc ingenion,dar ma gandeam ca ar putea sa dea cate o problema pe zi iar la sfarsitul celor 7 zile sa se faca un clasament. :D

Edited by Ann0nim, 09 September 2009 - 22:20.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate