Afişează mesaje
|
Pagini: 1 ... 4 5 [6]
|
126
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 357 Editor
|
: Martie 19, 2010, 23:10:06
|
mi-a iesit de 100 puncte ideea este urm: retii intr-un vector char parantezele si de fiecare data cand ai '*' stergi ultimul caracter.apoi mai iei 4 variabile in care notezi: -cate ' ( ' ai -cate ' ) ' ai -cate ' [ ' ai -cate ' ] ' ai apoi verifici daca nr_par_(==nr_par_) si nr_par_[==nr_par_] si daca nu ai alte chestii( de exemplu "( ( [ ) ] ) ") totusi ce are testul 1 ca am vazut ca pica multi pe el . e din cauza ca are '*' la inceput?
|
|
|
132
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 480 Ecuatii 2
|
: Februarie 28, 2010, 17:35:11
|
Salut Cum se face ca iau 20 de puncte ?Adica nu-mi dau seama la ce am gresit(dar presupun ca stiu) #include<fstream.h> #include<string.h> #include<math.h> ifstream f("ecuatii2.in"); ofstream g("ecuatii2.out"); int mod(double a){ if(a<0) return a*-1; return a; } int cifra(char a){ if(a>='0' && a<='9') return 1; return 0; } int main(){ char a[256],semn='+'; int nr2,n,i,l,j,ret,l2; double lit,cif,nr,nr3; f>>n; for(i=1;i<=n;i++){ f>>a;//f.get(a,255); f.get(); j=0; while(a[j]!='=') j++; nr2=j; l=strlen(a); l2=l; semn='+'; j=0; lit=0; cif=0; while(/*a[j-1]!='=' && a[j]!='=' && j<l*/j<nr2){//mergi pana la egal('=') //g<<"da\n"; if(cifra(a[j])){//daca a[j] este cifra nr=0; if(j>0) semn=a[j-1]; while(cifra(a[j]) && a[j]!='='){//cat timp a[j] este cifra nr=nr*10+(a[j]-'0'); j++; } if(semn=='+'){ if(a[j]=='x') lit=lit+nr; else cif=cif+nr; } else if(semn=='-'){ if(a[j]=='x') lit=lit-nr; else cif=cif-nr; } } else if(a[j]=='x'){if(j>0) semn=a[j-1];if(semn=='+') lit++;else lit--;} j++; } j=j-(j-nr2); ret=j+1; j++; //g<<a[j]<<"\n"; semn='+'; l=l2; while(j<l){ if(cifra(a[j])){//daca a[j] este cifra if(a[j-1]!='=') semn=a[j-1]; nr=0; while(cifra(a[j]) && j<l){//cat timp a[j] este cifra nr=nr*10+(a[j]-'0'); j++; } if(semn=='+'){ if(a[j]=='x') lit=lit-nr; else cif=cif-nr; } else if(semn=='-'){ if(a[j]=='x') lit=lit+nr; else cif=cif+nr; } } else if(a[j]=='x'){if(a[j-1]=='-' || a[j-1]=='+') semn=a[j-1];if(semn=='+') lit--;else lit++;} j++; } //if(cif<0) cif=cif*-1; //if(lit<0) lit=lit*-1; //if(cif<0){cif=cif*-1;lit=lit*-1;} nr3=cif/lit; if(nr3<0) cif=cif*-1;//aici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!cred ca nu e bine ca //uneori afiseaza numar negativ :-k if(lit!=0) g<<cif/lit<<"\n"; else if(lit==0 && cif!=0) g<<"imposibil\n"; else if(lit==0 && cif==0) g<<"infinit\n"; //g<<cif<<" "<<lit<<"\n"; //g<<a[0]<<"\n"; } g.close(); return 0; }
|
|
|
134
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra
|
: Februarie 21, 2010, 20:55:46
|
sigur nu sunt gresite testele?adica iau 0 puncte si imi da bine pentru exemplu.uite ideea mea: ca sa calculam ultima cifra trebuie sa calculam doar suma ultimelor cifre.doar ca si asta ar fi cam mult.asa ca,intr-un vector separat retii sumele astfel: poz 1:ucif(1^1) poz 2:ucif(1^1)+ucif(2^2) poz 3:ucif(1^1)+ucif(2^2)+ucif(3^3) ... si de fiecare data eu afisezi v[ucif a lui n](deoarece ucif(1^1+2^2+...+9^9)=0,deci ne va interesa doar ultima cifra(adica restul impartirii la 10),pentru ca celelalte vor avea suma 0) si algoritmul asta ia 0 puncte( ) uite ce am facut eu: #include<fstream.h> #include<string.h> ifstream f("cifra.in"); ofstream g("cifra.out"); int main(){ char a[101]; int v[10],n,i,l; v[0]=0; v[1]=1; v[2]=5; v[3]=2; v[4]=8; v[5]=3; v[6]=9; v[7]=2; v[8]=8; v[9]=7; f>>n; for(i=1;i<=n;i++){ f>>a; l=strlen(a); g<<v[a[l-1]-'0']<<"\n"; } g.close(); return 0; }
daca va dati seama care e problema va rog sa-mi spuneti
|
|
|
136
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 046 Text
|
: Februarie 05, 2010, 20:12:38
|
40 de puncte #include<fstream.h> #include<string.h> ifstream f("text.in"); ofstream g("text.out"); int litera(char a){ if((a>='a' && a<='z') || (a>='A' && a<='Z')) return 1; return 0; } int bun(char a,char b){ if(litera(a) && b=='-') return 1; return 0; } int main(){ char a[10001]; int cuv=0,nr=0,l,i,len,k; f.getline(a,2000); l=strlen(a); i=0; while(i<l){ if(litera(a[i])) nr++; i++; } i=0; while(litera(a[i])==0) i++;//cat timp exista spatii la inceput le elimini while(i<l){ while(litera(a[i])) i++; if(litera(a[i-1]) || litera(a[i+1])) cuv++; while(!litera(a[i])) i++; } g<<nr/cuv; g.close(); return 0; }
|
|
|
138
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 018 Siruri 2-3-monotone
|
: Decembrie 13, 2009, 17:59:22
|
nivan,uite de ce iei 40 de puncte Test Timp executie Memorie folosita Mesaj Punctaj/test 1 0ms 8kb Corect! 10 2 20ms 540kb Corect! 10 3 0ms 12kb Corect! 10 4 0ms 12kb Corect! 10 5 1052ms 2256kb Time limit exceeded. 0 6 1052ms 2720kb Time limit exceeded. 0 7 1052ms 2540kb Time limit exceeded. 0 8 1052ms 2848kb Time limit exceeded. 0 9 1052ms 3788kb Time limit exceeded. 0 10 1052ms 3120kb Time limit exceeded. 0 Punctaj total 40 sper ca nu te superi,am trimis sursa ta
|
|
|
139
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 023 Numere Prime
|
: Decembrie 11, 2009, 19:30:04
|
salut tuturor.as avea o problema in legatura cu problema .la programul meu se blocheaza,am facut cu ciurul lui erastostene dar nu-mi merge(se blocheaza cand dau pe execute).ma poate ajuta cineva?va rog mult!!!uite sursa mea: #include<stdio.h> int a[10000],x[10000000],i,j,k,l=0,z,dk; int q=0; FILE *f,*g; int ciur(){ for(i=1;i<=1000000;i++) a[i]=0; i=2; dk=k; while(i<=1000){ if(a[i]==0) for(j=i+i;j<=1000000;j+=i)a[j]=1; i++; } j=1; for(i=1;dk>0;i++) if(a[i]==0) {dk--;x[j++]=i;} } int main(){ f=freopen("prim.in","rt",stdin); g=freopen("prim.out","wt",stdout); printf("%d",k); ciur(); q=2; while(l==0){ z=1; while(a[q]==0) q++; while(q%x[z]==0 && z<=k) z++; l=(z==k); q++; } fprintf(g,"%d",q); fclose(g); return 0; }
daca isi da cineva seama unde e eroarea sa scrie pe forum sau pe id-ul meu vladtarniceru(sau sa mi-o trimita mail la [email protected]).
|
|
|
140
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 002 Jocul Flip
|
: Decembrie 11, 2009, 17:35:07
|
ideea e usoara,eu zic ca trebuie facut asa: 1:calculez suma de pe fiecare linie(linia i) si verific daca suma<suma*(-1).daca e asa inmultesti fiecare din termenii de pe linia i cu (-1); 2:calculez suma de pe fiecare coloana(coloana j) si verific daca suma<suma*(-1).daca e asa inmultesti fiecare din termenii de pe coloana j cu (-1); 3.explicatie:daca (-a)+b+(-c)=s,atunci a+(-b)+c=s*(-1);(s=(-a)+b+(-c);daca il inmultesti pe s cu (-1) este clar ca suma relatiei *(-1) este s(s cel nou)) acum nu stiu cat de rapid e acest algoritm,cred ca face mai mult de 60-70 de puncte(sper)
|
|
|
142
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 003 Fractii
|
: Decembrie 10, 2009, 16:09:14
|
am incercat,dar tot nu prea am inteles(sunt in clasa a6-a ).Si pe sursa mea iau doar 10 puncte. #include<fstream.h> int prim(long n,long m){ while(m!=0 && n!=0) (m>n?m=m%n:n=n%m); if(n!=0) return n; return m; } ifstream f("fractii.in"); ofstream g("fractii.out"); int main(){ long t,n,m,nr=0; f>>t; nr+=t*2-1; for(n=2;n<=t;n++) for(m=2;m<=t;m++) nr+=(prim(n,m)==1); g<<nr; g.close(); return 0; }
asta e prog meu,poate isi da cineva seama....BAFTA:peacefingers:
|
|
|
143
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 003 Fractii
|
: Decembrie 10, 2009, 15:25:10
|
problema asta e frumoasa,dar am alta idee.pt a vedea daca 2 nr sunt prome intre ele scadem din cel mai mare cel mai mic pana nr sunt egale (ex:12,8,12-8=4.ramane 4,8.8-4=4.ramane 4,4 =>(12,8)=4).asta e recursiva.dar mai e si altfel.de imparte cel mare la cel mic si se pastreaza restul,pana unul din resturi este 0.atunci afisam numarul nenul(ex:12,8,12%8=4.ramane 4,8.8%4=0.ramane 0,4 => (12,8)=4).poate o sa para absurd,dar e algoritmul lui euclid .si mai e ceva.ajutati-ma si pe mine,care e ideea cu ciurul lui eratostene?memoram toate nr si apoi verificam cu un for daca e sau nu prim? ca de exemplu numarele 4 si 21 nu sunt prime dar sunt prime intre ele
|
|
|
144
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Problema
|
: Decembrie 08, 2009, 20:53:05
|
cine ma ajuta si pe mine cu alta problema?Uite enuntul:
Fie n un numar intreg strict pozitiv si c o cifra zecimala.
CERINTA
Scrieti un program care sa determine cel mai mare si cel mai mic numar care se pot obtine inserand cifra c in numarul n.
DATE DE INTRARE
Fisierul de intrare nr3.in contine pe prima linie numarul natural n si cifra c, separate printr-un spatiu.
DATE DE IESIRE Fisierul de iesire nr3.out va contine doua linii. Pe prima linie va fi scris cel mai mare numar care se poate obtine inserand cifra c in numarul n. Pe cea de a doua linie va fi scris cel mai mic numar care se poate obtine inserand cifra c in numarul n.
RESTRICTII Numarul are maxim 1000 de cifre
EXEMPLU .IN 372 5 .OUT 5372 3572
Aparent e usor,dar nu stiu cum fac sa treaca de la tipul char la int...
|
|
|
145
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 003 Fractii
|
: Noiembrie 20, 2009, 17:57:18
|
definitie:pentru ca o fractie sa fie ireductibila,(numarator,numitor)=1(cel mai mare divizor comun al numitorului si numaratorului trebuie sa fie 1),adica numaratorul si numitorul sa fie prome intre ele ,locu 1 dupa ce o fac(eti).parerea mea,faceti cu subprogram,dar nu gatantez ca o sa va dea 100 de puncte. int prim(long m,long h){ while(m!=h) if(m>h) m-=h; else if(m<h) h-=m; return h; } bafta am uitat sa spun asta e var recursiva incercati s-o imbunatatiti(ca timp de executie) cu modul in mod(....); in C/C++.in pascal nu mai stiu [editat de moderator] nu mai posta consecutiv, foloseste butonul "modifica"
|
|
|
|