Pagini: 1 ... 6 7 [8] 9 10 ... 12   În jos
  Imprimă  
Ajutor Subiect: 003 Fractii  (Citit de 144979 ori)
0 Utilizatori şi 2 Vizitatori pe acest subiect.
catalaur
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #175 : Ianuarie 19, 2008, 02:08:02 »

am citit toate indiciile de pe forum, dar tot nu inteleg cum sta treaba cu ciurul lui eratostene...nu ma prind kum m`ar ajuta generarea numerelor prime pentru cazul in care eu trebuie sa verific dak a si b sunt prime intre ele

citeste despre functia totient in special. aia te ajuta  wink

Pai o fractie este ireductibila daca cel mai mare divizor comun este 1.

Revenind la problema, care e treaba cu testele , imi ia timp de executie > 2secunde , iar codul este destul de simplu.
Memorat
astronomy
Nu mai tace
*****

Karma: 204
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #176 : Ianuarie 19, 2008, 03:23:30 »

Poate ca este simplu, dar nu este destul de performant. Citeste tot topicul la problema asta, sunt o gramada de sfaturi utile.
Memorat
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #177 : Martie 20, 2008, 22:07:02 »

Daca as face cu doua for-uri si dupaia sa calculez ptr i si j cel mai mare divizor comun ar intra in timp Huh
« Ultima modificare: Martie 31, 2008, 15:05:43 de către Popescu Marius » Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #178 : Aprilie 02, 2008, 13:22:24 »

Daca as face cu doua for-uri si dupaia sa calculez ptr i si j cel mai mare divizor comun ar intra in timp Huh
Nu. Iei km de 10 puncte asa.
Se rezolva cu functia lui euler... gasesti mai multe despre functia asta dak citesti toate paginile de pe forum despre problema
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #179 : Aprilie 02, 2008, 14:01:54 »

http://infoarena.ro/forum/index.php?topic=2512.0
Acilea arata qm se calculeaza mai simplu phi(n)  Smile

Offtopic: Cine ti-i diriga k vad k esti din bv, din liceu de info Very Happy
Memorat
BOgdu
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #180 : Aprilie 16, 2008, 10:44:31 »

Am facut programul cu 2 "For" si am verificat daca sunt prime intre ele (adica daca cmmdc=1,prin scaderi repetate). Am pus in fractii.in toate exemplele de la pag1, inafara de 1000000 si imi da bine, dar la evaluare dc iau 0 ?
Borland Pascal--
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #181 : Aprilie 16, 2008, 10:56:54 »

Rezolvarea ta nu este una optima, de aia iei pe cateva teste Time limit exceeded. Pentru raspunsurile gresite nu stiu ce explicatie sa'ti dau daca zici ca iei toate testele.
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #182 : Aprilie 16, 2008, 10:58:39 »

raspunsul poate sa fie destul de mare si ar trebui sa folosesti tipul de date 'extended' (nu mai tin minte exact daca acesta iti retinea numerele pana in 2^64). downloadeza-ti free pascal, deoarece borlandul are multe restrictii (incepand cu memoria si terminand cu tipurile de date). citeste intai documentatia (in special la evaluator), apoi downloadeaza-ti compilatoarele folosite de infoarena si, in cele din urma, citeste acest forum si incearca sa gasesti o rezolvare care se incadreaza in timp.

Spor!  Thumb up
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
BOgdu
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #183 : Aprilie 16, 2008, 11:26:56 »

Eu acum sunt la info, si am intrebat`o si pe dira ..si am mai optimizat`o si am luat numa 10...cand ajung acasa, o fac in free pascal
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #184 : Aprilie 16, 2008, 12:08:55 »

in pascal ptr numere pana la 2^64 foloseste int64, bineinteles asta in freepascal, borlandul nu cred ca stie.
@Bogdu: Ti s-a zis si mai sus ca algoritmul tau nu este optim. Degeaba incerci sa optimizezi o sa iei maxim 30 de pct sa zicem, ca sa iei 100 trebuie sa schimbi algoritmul cam de pe la radacina.
Memorat
andrici_cezar
De-al casei
***

Karma: -47
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #185 : Noiembrie 03, 2008, 19:58:25 »

am o intrebare? cum arata ultimul test. Mie imi da doar 90 de puncte. Aveti vreo ideie cum pot inbunatati acest timp de 2048 de ms si cum sa imbunatatesc problema pana la 100 de puncte?

in pascal ptr numere pana la 2^64 foloseste int64, bineinteles asta in freepascal, borlandul nu cred ca stie.
@Bogdu: Ti s-a zis si mai sus ca algoritmul tau nu este optim. Degeaba incerci sa optimizezi o sa iei maxim 30 de pct sa zicem, ca sa iei 100 trebuie sa schimbi algoritmul cam de pe la radacina.
mie nu mia mers cu int64 dar iti merge cu qword, dar intr-un fel ai dreptate deoarece trebuie sa schimbi programul ca altfel iti iese aiurea timpul la ultimul test. Oricum pe mn ma poate ajuta cineva? Read This!

Editat de moderator: Nu posta consecutiv pe aceeasi tema! Modifica mesajele precedente!
« Ultima modificare: Noiembrie 06, 2008, 20:16:59 de către Paul-Dan Baltescu » Memorat
criscer
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #186 : Noiembrie 10, 2008, 20:09:30 »

cum poate fi gasit cel mai mare divizor comun a doua numere in turbo pascal?
   mersi anticipat...
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #187 : Noiembrie 10, 2008, 20:21:47 »

cu algoritmul lui euclid, poti gasi mai multe detalii in topicul destinat problemei 001. CMMDC
Memorat
andrici_cezar
De-al casei
***

Karma: -47
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #188 : Noiembrie 21, 2008, 19:51:21 »

Pe mine cine ma poate ajuta ca tot nu primesc raspuns? De ce ia atat de mult si cum as putea sa inbunatatesc timpul
Memorat
b.ionut
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #189 : Februarie 01, 2009, 16:48:55 »

Salut,

Incerc si eu de cateva zeci de minute sa rezolv aceasta problema insa fara succes ( inca ). Am citit cam tot ce ati scris in acest topic .

Eu am ajuns pana la faza generarii tuturor fractiilor, mai exact :

 
Cod:
for (i=1;i<=n;i++)  
  { 
      for (k=1; k<=n; k++) 
      { 
         p = i; 
         q = k;   
         // cout<<"P/Q = "<<p<<" / "<<q<<endl;
      } 
  } 

Practic, ma intereseaza ca din aceste toate fractii sa le dau pe cele reductibile la o parte iar pe celelalte sa le adun intr-o variabila s pe care sa o salvez apoi in fractii.out .

Aveti un link unde as putea citi despre o solutie pentru situatia mea, please ?

Am observat ca link-ul de pe forum despre Ciurul lui Eratosthenes nu mai functioneaza .

Mersi,
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #190 : Februarie 01, 2009, 17:17:49 »

Daca ai citit intreg topicul, inseamna ca ai vazut faptul ca problema se rezolva utilizand functia totentiala. tot(n) este o functie care iti intoarce numarul de numere prime cu n si mai mici decat n. Din cauza faptului ca ai nevoie de toate tot(i) (cu i<=n), e mult mai bine sa precalculezi la inceput intr-un vector, valorile respective. Ca sa faci aceasta precalculare, te folosesti de Ciurul lui Eratostene .

Functia totentiala este : tot(n) = n*(1-1/p1)*(1-1/p2)...*(1-1/pk), unde p1,p2,...,pk sunt factorii primi care apar in descompunerea lui n.

In legatura cu solutia prezentata de tine, complexitatea ei e O(n^2), si avand in vedere ca n este 1 milion, cu siguranta nu o sa iti intre in timp, indiferent daca iti va da corect. Succes!
Memorat
Necro
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #191 : Februarie 20, 2009, 23:38:35 »

Lamuritima putin, deci.... atunci cand e sus numar impar atunci jos apar si impare si pare, si atunci cand e sus numar par atunci jos apar numai impare, cu conditia ca sa nu fie egale cu numaru de sus.
Alta regula nu gasesc, spunetimi voi....e greu Neutral

Spunetimi va rog care e formula completa, ca nu potsa o deduc.Eu cred ca e in felu urmator
Atunci cand e sus numar impar, atunci apar fractii care au numitor si par si impar
Cand numaratoru e par, atunci la numitor sunt numai fractii impare , cu conditia ca sa nu fie egale cu numaratoru . Ma insel ?

[edit] nu mai posta de 2 ori consecutiv, foloseste butonul "modifica"
« Ultima modificare: Februarie 21, 2009, 09:10:05 de către Sima Cotizo » Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #192 : Februarie 21, 2009, 12:33:18 »

Problema nu are nicio treaba cu paritatea numerelor. In schimb, are treaba cu numarul de numere relativ prime cu n si mai mici ca n(n - un nr dat). Citeste tot topicul asta, si sunt sigur ca vei gasi rezolvarea. Succes!
Memorat
Necro
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #193 : Februarie 21, 2009, 17:09:24 »

atunci nici nu ma apuc de ea...e grea si neinteresanta...nici macar nu stiu cum e ciuru' lu erastotene si nici nu inteleg nimic daca ma uit pe net..treb sa imi expl cineva..sunt doar cls a 9-a :\ ffs
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #194 : Februarie 21, 2009, 17:24:04 »

e grea si neinteresanta.

Atunci zi-mi motivul pt care ai cerut lamuriri referitor la aceasta problema 'neinteresanta'. Sunt foarte curios.
Memorat
sigrid
De-al casei
***

Karma: 61
Deconectat Deconectat

Mesaje: 129



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

nu stiu cum e ciuru' lu erastotene si nici nu inteleg nimic daca ma uit pe net..treb sa imi expl cineva..

Pentru ciur incearca sa te uiti in arhiva educationala aici : http://infoarena.ro/problema/ciur. Si ca sa intelegi mai bine pe sursele celor care au facut problema. Arhiva educationala este conceputa pentru incepatorii care vor sa invete lucruri noi.

Cat despre surse, inclusiv problema fractii are acces liber la sursele trimise. Daca e ceva ce nu intelegi, trimite-mi un mesaj personal si o sa-ti explic eu cum functioneaza ciurul.
Memorat
Davide
Strain


Karma: -7
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #196 : Martie 10, 2009, 19:51:41 »

Este foarte simpla, insa exemplul este gresit, 1/1 nu este fractie ireductibila.

dACA bagati 4 si va da 8 e bine! 1/1, 2/1, 3/1 si 4/1 nu trebuie luate in calcul.

[editat de moderator] Nu mai posta consecutiv, foloseste butonul "Modifica".
« Ultima modificare: Martie 10, 2009, 19:55:14 de către Sima Cotizo » Memorat
DraStiK
Nu mai tace
*****

Karma: 131
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #197 : Martie 10, 2009, 19:57:31 »

Este foarte simpla, insa exemplul este gresit, 1/1 nu este fractie ireductibila.

dACA bagati 4 si va da 8 e bine! 1/1, 2/1, 3/1 si 4/1 nu trebuie luate in calcul.

[editat de moderator] Nu mai posta consecutiv, foloseste butonul "Modifica".

daca citesti cu atentie cerinta ai sa vezi ca fiecare fractie de forma nr/1 e considerata ireductibila si de aceea 1/1, 2/1 samd trebuie luate in considerare
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #198 : Martie 10, 2009, 22:26:24 »

Sa citim putin definitia unei fractii ireductibile.

Sa aruncam o privire asupra fractiei 4/2 (a = 4, b = 2). Daca am considera ca 2/1 (consideram toate cele 4 posibilitati in functie de semne: -2/1, 2/-1, -2/-1, 2/1) nu este fractie ireductibila, atunci nu am putea gasi alte doua valori c si d cu proprietatea ca a/b = c/d, |c| < |a| si |d| < |b|. De aici ar rezulta ca 4/2 este o fractie ireductibila - evident, fals.

Putem trage concluzia ca 2/1 este o fractie ireductibila.
Memorat

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

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #199 : Martie 12, 2009, 20:44:56 »

imi explica si mie ce e gresit la rezolvarea asta:
in vectorul phi[ i ] -retin cate numere prime cu i is in sirul  1,2,....n.
Initial  vectorul are phi[1]=n si  restu  phi[ i ]=n-1,i>1;
Si aplic  ciurul lui eratostene , scazand din phi[ i ] si  phi[ i*j ] cate  1. Iar apoi rezultatul e suma lor.
Sursa implementata e aici.
Very Happy
[later] Am  gasit  eroarea Smile
« Ultima modificare: Martie 13, 2009, 08:38:29 de către alexandru » Memorat
Pagini: 1 ... 6 7 [8] 9 10 ... 12   În sus
  Imprimă  
 
Schimbă forumul:  

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