Pagini: [1] 2 3   În jos
  Imprimă  
Ajutor Subiect: 479 Paritate  (Citit de 18204 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : August 13, 2007, 22:15:34 »

Aici puteţi discuta despre problema Paritate.
Memorat
swift90
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #1 : August 20, 2007, 21:07:21 »

cred ca ar trebui aranjate un pic testele deoarece am trimis sursa de vreo 10 ori pana am lua 100 (la restul evaluarilor Incorrect pe toate testele). singura greseala era la citire unde citea mai mult Aha, adica linia de 0 si 1 nu se termina cu "\n" (conditia de oprire din while-ul de la citire). asta e o problema pentru unii deoarece am vazut cateva surse care au luat 100 din prima. cred ca depinde de cum face fiecare citirea. Brick wall
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #2 : August 20, 2007, 22:48:37 »

Sigur depinde de citirea fiecaruia. Cauta o citire care sa nu mai depinda atat de '\n' si altele. Poti citi tot cu fread() intr-un sir de caractere si scoate datele "manual", asa cu i ++. Smile
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
eddie
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #3 : Octombrie 24, 2007, 14:56:42 »

memset(citit,0,sizeof(citit));
   scanf("%s",citit);
   long val = strlen(citit);
   if( val  > 60001)
         while(1);

-> tle....
deci la teste sunt ceva probleme cred......
daca asa sper sa le reparati
va multumesc anticipat pentru efortul pe care il depuneti
   
Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #4 : Octombrie 24, 2007, 15:06:32 »

Prin 60 000 de caractere se refera la 60 000 de octeti... deci pune 60000*8.

Cam neclar intr-adevar... si '0' si '1' sunt caractere.
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #5 : Octombrie 24, 2007, 17:15:49 »

...   scanf("%s",citit);    ...

%s mi se pare ca citeste doar 32000 de caractere. citeste cu fgets.
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #6 : Octombrie 24, 2007, 21:06:43 »

Ma indoiesc ca citeste doar 32000 caractere. Eu mereu citesc cu scanf.
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #7 : Octombrie 24, 2007, 21:30:22 »

Cod:
#include <stdio.h>
#include <string.h>

char s[66000];

int main()
{
        int i;
freopen("test.in", "w", stdout);
        for (i = 0; i < 32000; i++) printf("a");
for (i = 32000; i < 65000; i++) printf("b");
freopen("test.in", "r", stdin);
scanf("%s", s);
        i = strlen(s);
        printf("%d\n", i);
return 0;
}

i-ul este 30000, desi in fisier am 65000 de caractere.
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #8 : Octombrie 24, 2007, 21:51:26 »

Interesant, daca fac urmatoarele modificari:

Cod:
#include <stdio.h>
#include <string.h>

char s[66000];

int main()
{
        int i;
    FILE *f = fopen("test.in","w");
    for (i = 0; i < 32000; i++) fprintf(f, "a");
for (i = 32000; i < 65000; i++) fprintf(f, "b");
fclose(f);
f = fopen("test.in","r");
fscanf(f, "%s", s);
        i = strlen(s);
        printf("%d\n", i);
return 0;
}

Afiseaza pe ecran 65000.

Daca nu modific nimic, in fisier am valoarea 61440 la sfarsit. Daca folosesc un watch, mi-l arata pe i ca fiind tot 61440...

Asta pe Windows cu compilator gcc. Banuiesc ca freopen e de vina...
« Ultima modificare: Octombrie 24, 2007, 21:58:43 de către Ionescu Vlad » Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #9 : Octombrie 24, 2007, 22:06:35 »

da, se pare ca ai dreptate. eu nu am prea folosit fopen pana acum. dubios gcc-ul asta... Fighting
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #10 : Octombrie 24, 2007, 23:05:30 »

Nu e nimic dubios. In momentul in care tu deschizi fisierul pentru citire mai are informatii ramase in buffer.

Foloseste fflush()

Cod:
#include <stdio.h>
#include <string.h>

char s[66000];

int main()
{
        int i;
freopen("test.in", "w", stdout);
        for (i = 0; i < 32000; i++) printf("a");
for (i = 32000; i < 65000; i++) printf("b");
        fflush(stdout);
freopen("test.in", "r", stdin);
scanf("%s", s);
        i = strlen(s);
        printf("%d\n", i);
return 0;
}
Memorat
astronomy
Nu mai tace
*****

Karma: 204
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #11 : Octombrie 25, 2007, 08:43:45 »

Oricum, windowsul e de vina, se intampla pe gcc sub windows sa-ti citeasca mai putine caractere cu scanf, dar nu e cazul sub linux.
Memorat
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #12 : Octombrie 25, 2007, 10:03:16 »

Fara fflush() de care am zis si pe linux citeste doar 61440 pentru ca nu se goleste bufferul inainte de deschiderea fisierului pentru citire.
Memorat
astronomy
Nu mai tace
*****

Karma: 204
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #13 : Octombrie 25, 2007, 10:14:44 »

Am postat incomplet Embarassed Eu ma refeream doar la partea cu "scanf citeste doar 30000 caractere".
Memorat
Sycron
Client obisnuit
**

Karma: -141
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #14 : Decembrie 21, 2007, 22:43:59 »

eu am gasit o rezolvare mai simpla Very Happy nu va inteleg eu pe voi astia mari cum va complicati atata..(nu prea inteleg ce ati vrut sa comunicati mai sus dar nu conteaza  Eh?)

am folosit un vector in care am memorat toti cei de '0' si '1'... problema e "Memori time limit exceeded" sau ceva de genu ...

deci maximul de 0 si 1 e 60.000*8biti (Textul transmis are cel mult 60000 caractere.)
adica 480.000 de '0' si '1' .. e un vector cam mare, nu ? Neutral
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #15 : Decembrie 21, 2007, 23:09:54 »

prima data ia 100 de puncte.. apoi explica rezolvarea daca e mai simpla...
Memorat
Sycron
Client obisnuit
**

Karma: -141
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #16 : Decembrie 21, 2007, 23:24:39 »

pai nam facut cine stie ce..
intrun vector am memorat toti cei '0' si '1' (vector cam mare-- ptr doar 1024kb limita de memorie...) si la evaluare primesc la toate OK .. mai putin la 4 teste (Memory limit exceded.. cu doar 40k mai mult decat limita)

acuma ma gandesc la o solutie in care sa memorez direct in vector codurile ASCII ... folosind astfel o memorie de 8 ori mai mica .. teoretic Smile

noapte buna.. gandesc maine
Memorat
Sycron
Client obisnuit
**

Karma: -141
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #17 : Decembrie 23, 2007, 07:42:07 »

prima mea metoda era mai eficienta  Eh? (ca timp de executie)  dar depasea memoria pusa la dispozitie Neutral
http://infoarena.ro/job_detail/117687

... la cea de-a doua metoda am luat 100 puncte ... dar are cam 5 ms mai mult decat prima metoda  Indifferent
http://infoarena.ro/job_detail/117735
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #18 : Decembrie 23, 2007, 08:44:09 »

Cand depasesti memoria sau timpul programul este oprit in acel moment... nu e rulat pana se termina ca ar putea sta si ani de zile unele programe...
Memorat
Sycron
Client obisnuit
**

Karma: -141
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #19 : Decembrie 23, 2007, 09:33:36 »

ma refeream la exemplele la care am "OK!" . la alea am un timp putin mai mic decat cele de la problema pe care am luat 100pcte
da nu mare diferenta +-1ms Very Happy
« Ultima modificare: Decembrie 23, 2007, 09:56:42 de către Harabula Adrian » Memorat
cristiprg
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 23



Vezi Profilul
« Răspunde #20 : Ianuarie 13, 2008, 20:59:01 »

daca imi afiseaza corect programu, si mai exista caracterul spatiu, ii gresit? 0 puncte?
Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #21 : Februarie 14, 2008, 17:37:17 »

Nu pot intelege de ce iau 6 TLE. Eu am complexitatea O(lungimea textului*2). in rest iau 4 Killed by signal si nici aici nu imi dau seama unde busesc, chiar daca folosesc liste.
http://infoarena.ro/job_detail/135825
Daca aveti o sugestie sau ceva... Cry
Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #22 : Februarie 14, 2008, 18:10:40 »

SIGSEGV - daca folosesti liste vezi cum iti aloci memoria, sa nu citesti pe unde nu ai alocat. Sigsecv trimite programul atunci cand accesezi memorie aiurea.
Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #23 : Februarie 14, 2008, 18:19:46 »

Da stiu...numai ca eu folosesc liste numai la scriere...si m-am uitat acolo si nu pare nimic gresit...voi incerca sa citesc cu fgets. Sper ca va merge... Confused

[L.E.]: Acum citesc cu fgets si nu mai iau TLE, din pacate iau 4 WA...oricum ty for help Very Happy

[L.L.E.]: Stie cumva cineva ce au mai special testele 6,7,8 si 9? ca nu reusesc sa iau OK pe ele, iau WA
« Ultima modificare: Februarie 14, 2008, 19:30:08 de către Radu Zernoveanu » Memorat
savim
Nu mai tace
*****

Karma: 194
Deconectat Deconectat

Mesaje: 333



Vezi Profilul
« Răspunde #24 : Februarie 14, 2008, 20:14:09 »

Incearca sa citesti caracter cu caracter, poate busesti ceva la citire...
Memorat
Pagini: [1] 2 3   În sus
  Imprimă  
 
Schimbă forumul:  

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