Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 345 Nasa  (Citit de 11100 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
aladin
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #25 : Iulie 21, 2009, 15:38:48 »

o alta idee??
Memorat
cosmin79
Strain
*

Karma: 36
Deconectat Deconectat

Mesaje: 46



Vezi Profilul
« Răspunde #26 : August 01, 2009, 21:54:34 »

Salut. Am incercat si eu problema asta si nu inteleg de ce iau killed by signal 11 pe multe teste. Eu fac ciurul pt patratele numerelor prime pana in sqrt(b) si pe urma impart intervalul [a,b] in intervale de maxim 10^6 numere care reunite dau intervalul [a,b](cv de genu: [a,b]=[a,a+10^6-1] reunit cu [a+10^6, a+2*10^6-1] reunit cu... [a+k*10^6,b] si pt fiecare ciur pe un interval mic folosesc un vector de char de dimensiune 2^20 (>10^6) Ma lamureste cineva va rog ce gresesc? Mersi anticipat!

Later edit:Tot ce greseam era o singura linie: poz2=(poz/nr[j]+1)*nr[j];  poz2 putea depasi int.Las comentariul in caz ca mai are cineva vreodata problema asta.
« Ultima modificare: August 07, 2009, 21:59:21 de către Carabet Cosmin Andrei » Memorat
robigi
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #27 : Octombrie 03, 2009, 18:37:42 »

imi puteti spune pls cat spatiu ocupa o variabila de tip bool?    .. pt ca incerc sa folosesc un vector bool v[100 000 000] shi am memory limit exceeded
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #28 : Octombrie 03, 2009, 19:52:12 »

1 byte (octet). E normal sa iti iasa din memorie.
Memorat

Am zis Mr. Green
robigi
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #29 : Octombrie 03, 2009, 19:53:44 »

aha, k ms    mie mi s-a parut ca e un bit 1/8 byte adica

si atunci cam ce ai, ati sugera?
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #30 : Octombrie 03, 2009, 20:38:27 »

Bitset.
Memorat
robigi
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #31 : Octombrie 03, 2009, 20:54:53 »

ok ms, imediat ce o sa aflu ce-i aia o sa incerc sa aplic
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #32 : Octombrie 03, 2009, 21:49:22 »

http://www.cplusplus.com/reference/stl/bitset/
Memorat
tzipleatud
De-al casei
***

Karma: 104
Deconectat Deconectat

Mesaje: 117



Vezi Profilul
« Răspunde #33 : Ianuarie 04, 2012, 16:38:16 »

Am scris o sursa in care am respectat indicatiile din comentariile anterioare (pt fiecare nr. prim <sqrt(b) am marcat multipli patratului acestuia din intervalul [a,b]) dar iau 60p cu restul TLE. Am citit despre anumite operatii pe biti dar nu imi dau seama ce operatii si unde sa le folosesc. Daca imi puteti da un mic hint despre aceste operatii,va rog Smile. Multumesc anticipat! Very Happy
Memorat
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #34 : August 13, 2012, 19:46:12 »

Si eu iau 60p , am facut un ciur cu nr prime si unul in care marchez nr de la A la B. Tot tle. Cine a mai rezolvat problema , va rog , putin ajutor...
Memorat
ctlin04
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #35 : August 14, 2012, 00:02:58 »

Nustiu cum ai facut tu ca nu prea am chef sa ma uit pe sursa ta la ora asta, insa niste indicii pentru a lua 100 cred ca ar fi:
1. Mergi si controleaza doar multipli la patrate de numere prime;
2. Gindestete cum pentru un patrat fixat fie el p sa faci (b-a)/p oparatii pentru a-l prelucra;
3. Cind faci ciurul mergi doar pe numere impare cazul x=2 tratindu-l aparte, defapt aceasta optimizare m-a ajutat si pe mine sa iau 100 ca fara ea ultimul set de teste mergea la limita si e clar ca nu se nimerea ca sa mearga tot setul odata.
Cam asta. SPOR  Smile
Memorat
Steve
Client obisnuit
**

Karma: 36
Deconectat Deconectat

Mesaje: 72



Vezi Profilul
« Răspunde #36 : August 14, 2012, 05:15:43 »

Mie mi-a intrat lejer cu o metoda neoptimizata, dar care nu folosea STL...Incearca sa faci bitset-ul de mana, ca nu-i mare chestie sa scrii 2 functii inline / macrouri. N-ai nevoie de long long...baga toate variabilele pe uint. Faci chestiile astea si dublezi viteza.
Memorat
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #37 : August 14, 2012, 16:43:04 »

Am incercat ambele , ceva imi scapa  Whistle. Daca imi poate da cineva sursa prin PM raman recunoscator. Nu ma prind nicicum.  Fool
Memorat
ctlin04
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #38 : August 14, 2012, 16:55:14 »

Ti-am trimis PM, dar ma uit ca si sursa ta e buna doar ca ultimul for e prea costisitor, trebue sa numeri numerele pe care le excluzi deodata cind prelucrezi patratele nr prime   Ok
Memorat
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #39 : August 14, 2012, 17:20:07 »

@Catalin: 10x.  Yahoo! Asta era.
@Steve: Ai dreptate , bitset de mana merge mult mai rapid.  Applause
Memorat
lucian666
Client obisnuit
**

Karma: 16
Deconectat Deconectat

Mesaje: 84



Vezi Profilul
« Răspunde #40 : Septembrie 19, 2012, 23:15:45 »

Buna seara.
Am complexitatea ceruta ,dar iau doar 20 pct cu Killed by signal.
Codul care imi nr numerele cerute:

Cod:

 for(int i=2;i<=BB;i++)
        {
            int x=0;
            int number= i*i;
            ciur2[number]=1;
            if( number < A )
                if( A % number )
                    x=A/number+1;
                else
                    x=A/number;
            else
                 x=1;
                 while( 1LL * (number * x) <=B )
                {
                    ciur2[number*x]=1;
                x++;

                }


BB=sqrt(B). vectorul ciur e de tip bitset si are 100 milioane de elemente Smile

Vreo sugestie cum pot scapa de Killed By Signal?
Multumesc Anticipat!!!
Memorat
vendetta
De-al casei
***

Karma: 72
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #41 : Septembrie 20, 2012, 13:38:23 »

Ai grija ce bagi in ciur2;in acel while cred ca la un momendat bagi numere mai mari ca si 100 de milioane; m-am uitat si peste ultima sursa trimisa de tine si ai la sfarsit for(int i=A; i<=B; ++i) if ( ciur2[ i ] ) blaala...; acel i depaseste 100 de milioane
Memorat
lucian666
Client obisnuit
**

Karma: 16
Deconectat Deconectat

Mesaje: 84



Vezi Profilul
« Răspunde #42 : Septembrie 20, 2012, 15:53:56 »

Ai grija ce bagi in ciur2;in acel while cred ca la un momendat bagi numere mai mari ca si 100 de milioane; m-am uitat si peste ultima sursa trimisa de tine si ai la sfarsit for(int i=A; i<=B; ++i) if ( ciur2[ i ] ) blaala...; acel i depaseste 100 de milioane

Si cum as putea face astfel incat sa nu-mi depaseasca 100 mil?  eu  trebuie sa marchez toti multiplii numarului <=b si oricum trece de 100 milioane la un moment dat Brick wall
Mersi Smile
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

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