Subiectul III SUBIECT ITEM INDICAŢII 3 O posibilă soluţie citeşte de la tastatură numărul n şi apoi E_INFO_INTENSIV_C_SIII_001 toate numerele din fişier; pentru fiecare dintre ele E_INFO_ INTENSIV_PASCAL_SIII_001 testează condiţia impusă, iar dacă aceasta este îndeplinită, afişează pe ecran numărul respectiv, în formatul cerut. 4 a) O posibilă soluţie pentru prelucrarea cerută presupune E_INFO_INTENSIV_C_SIII_001 parcurgerea tabloului, compararea fiecărui element cu E_INFO_ INTENSIV_PASCAL_SIII_001 valoarea lui a şi contorizarea celor care îndeplinesc condiţia impusă. b) O posibilă soluţie presupune citirea numerelor de la tastatură, apoi, pentru fiecare număr ai se calculează numărul elementelor mai mici decât ai, respectiv ai+1; dacă diferenţa celor două numere găsite este diferită de 1, rezultă că tabloul nu respectă cerinţa impusă. 3 O posibilă soluţie presupune citirea numerelor din fişier, E_INFO_INTENSIV_C_SIII_002 memorarea celor nenule într-un tablou care apoi se E_INFO_ INTENSIV_PASCAL_SIII_002 ordonează crescător; in final, tabloul ordonat se afişează pe ecran. 4 a) O posibilă soluţie pentru prelucrarea cerută presupune E_INFO_ INTENSIV_C_SIII_002 parcurgerea tuturor divizorilor posibili ai lui a, pentru E_INFO_ INTENSIV_PASCAL_SIII_002 fiecare divizor găsit determinându-se puterea la care acesta apare în descompunerea în factori primi; numărul a este împărţit succesiv la acest divizor. Fiecare putere astfel determinată este însumată, rezultatul fiind valoarea returnată de funcţie. b) pentru numărul citit se construiesc numerele obţinute prin permutarea cifrelor acestuia şi, apelând funcţia f, se testează dacă acestea sunt numere sunt prime (suma exponenţilor este 1). 3 O posibilă soluţie presupune utilizarea unui vector E_INFO_ INTENSIV_C_SIII_003 caracteristic, completat pe măsură ce se citesc numerele E_INFO_ INTENSIV_PASCAL_SIII_003 din fişier. Vectorul se parcurge începând de la indicele 100 şi se vor afişa indicii elementelor nenule, de un număr de ori corespunzător. 4 a) o posibilă soluţie pentru prelucrarea impusă E_INFO_ INTENSIV_C_SIII_003 presupune parcurgerea cifrelor numărului, contorizând E_INFO_ INTENSIV_PASCAL_SIII_003 numărul apariţiilor cifrei cerute. b) o posibilă soluţie presupune căutarea tuturor cifrelor de la 9 la 0 în numărul dat; dacă o astfel de cifră apare de un număr par de ori, ea poate fi inclusă în palindrom, altfel acest lucru nu este posibil. 3 O posibilă soluţie presupune utilizarea unui vector E_INFO_ INTENSIV_C_SIII_004 caracteristic, completat pe măsură ce se citesc numerele E_INFO_ INTENSIV_PASCAL_SIII_004 din fişier. Vectorul se parcurge de la dreapta la stânga, începând de la indicele 99 şi se vor afişa indicii elementelor nenule, de un număr de ori corespunzător. 4 a) o posibilă soluţie pentru prelucrarea impusă E_INFO_ INTENSIV_C_SIII_004 presupune parcurgerea cifrelor numărului, contorizând E_INFO_ INTENSIV_PASCAL_SIII_004 numărul apariţiilor cifrei cerute. b) o posibilă soluţie presupune căutarea tuturor cifrelor de la 1 la 9, şi includerea, de un număr de ori corespunzător, în numărul cerut, a acelor cifre impare care apar în numărul dat. O solutie posibilă pentru prelucrarea cerută presupune E_INFO_ INTENSIV_C_SIII_005 3 îndepărtarea din numărul dat a câte unei cifre (a E_INFO_ INTENSIV_PASCAL_SIII_005 unităţilor) şi scrierea în fişierul dat a numerelor obţinute, în formatul cerut. a) o posibilă soluţie a prelucrării cerute presupune E_INFO_ INTENSIV_C_SIII_005 4 testarea divizorilor posibili ai numărului a şi returnarea E_INFO_ INTENSIV_PASCAL_SIII_005 celui mai mic dintre aceştia, care îl divide pe a. b) o posibilă soluţie presupune citirea numerelor şi testarea proprietătii cerute pentru fiecare dintre ele (un număr este prim dacă el este egal cu cel mai mic divizor prim al său). Numerele prime sunt memorate într-un tablou care apoi este ordonat crescător, şi afişat. 3. O rezolvare posibilă citeşte de la tastatură valoarea lui n E_INFO_INTENSIV_C_SIII_006 şi elementele tabloului unidimensional. Se parcurg E_INFO_INTENSIV_PASCAL_SIII_006 elementele tabloului şi se determină sumele cerute, afişându-se în formatul precizat. 4. Pentru citirea numerelor din fişier vor fi folosite două E_INFO_INTENSIV_C_SIII_006 variabile simple ce reţin termenul citit anterior şi termenul E_INFO_INTENSIV_PASCAL_SIII_006 citit la pasul curent. Complexitatea algoritmului este O(n), unde n reprezintă numărul de termeni ai şirului. 3. O rezolvare posibilă citeşte de la tastatură valoarea lui n E_INFO_INTENSIV_C_SIII_007 şi elementele tabloului unidimensional. Determină poziţia E_INFO_INTENSIV_PASCAL_SIII_007 primului element par din zona 1 şi a ultimului element impar din zona 3 şi apoi interschimbă cele două elemente dacă există. Elementele tabloului vor fi afişate în fişierul BAC.TXT în formatul cerut. 4. a) Se va scrie definiţia completă a subprogramului p. E_INFO_INTENSIV_C_SIII_007 Pentru antetul subprogramului p se va alege E_INFO_INTENSIV_PASCAL_SIII_007 corespunzător tipul de subprogram, tipul parametrilor şi modul de transfer al acestora. Se vor folosi identificatorii de subprogram şi de parametri formali specificaţi în enunţ. b) Prin apeluri ale lui p se determină cel mai mare număr mai mare sau egal cu n, se afişează acesta şi apoi se scade din n valorea găsită. Procedeul se repetă până când n devine egal cu 0. 3. Programul citeşte n şi apoi cele n numere naturale E_INFO_INTENSIV_C_SIII_008 verificând pentru fiecare proprietatea de pătrat perfect. E_INFO_INTENSIV_PASCAL_SIII_008 Primul pătrat perfect va fi afişat ca atare, pentru fiecare dintre celelate pătrate perfecte afişandu-se valoarea precedată de semnul +. Se calculează pe parcurs şi se afişează la final suma pătratelor perfecte citite. 4. Se parcurg simultan cei doi vectori, preluând alternativ E_INFO_INTENSIV_C_SIII_008 valori astfel încât valorile preluate să fie în ordine E_INFO_INTENSIV_PASCAL_SIII_008 crescătoare. O rezolvare posibilă utilizează două variabile de tip tablou şi câteva variabile simple. Elementele determinate vor fi afişate în fişierul bac.txt în formatul cerut. 3. Se va scrie definiţia completă a subprogramului. Pentru E_INFO_INTENSIV_C_SIII_009 antetul subprogramului sub se va alege corespunzător E_INFO_INTENSIV_PASCAL_SIII_009 tipul de subprogram, tipul parametrilor şi modul de transfer al acestora. Se vor folosi identificatorii de subprogram şi de parametri formali specificaţi în enunţ. 4. O rezolvare de punctaj maxim implică un anumit grad de E_INFO_INTENSIV_C_SIII_009 creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_009 parţial pentru o soluţie ce parcurge numerele de 3 cifre si pentru fiecare număr se verifică dacă este în fişier, afişându-se numai cele mai mari 2 numere ce nu apar în fişier. 3. Se va scrie definiţia completă a subprogramului. Pentru E_INFO_INTENSIV_C_SIII_010 antetul subprogramului sub se va alege corespunzător E_INFO_INTENSIV_PASCAL_SIII_010 tipul de subprogram, tipul parametrilor şi modul de transfer al acestora. Se vor folosi identificatorii de subprogram şi de parametri formali specificaţi în enunţ. 4. E_INFO_INTENSIV_C_SIII_010 O soluţie eficientă din punct de vedere al timpului de executie va utiliza un vector cu 9999 elemente în care E_INFO_INTENSIV_PASCAL_SIII_010 indicii reprezintă codul unui produs iar valoarea elementului suma obţinută în urma vânzărilor acelui produs. E_INFO_INTENSIV_C_SIII_011 2 Se urmăresc apelurile recursive, determinându-se valoarea afişată. E_INFO_INTENSIV_PASCAL_SIII_011 E_INFO_INTENSIV_C_SIII_011 3. Un algoritm eficient de rezolvare constă în faptul că nu se folosesc variabile de tip tablou, ci la citirea numerelor E_INFO_INTENSIV_PASCAL_SIII_011 din fişier se compară numărul citit cu maximul elementelor citite anterior, şi dacă este cazul se actualizează acest maxim şi se afişează. E_INFO_INTENSIV_C_SIII_011 4. Se va ţine cont de observaţia că suma divizorilor unui număr prim x este egală cu x+1. E_INFO_INTENSIV_PASCAL_SIII_011 E_INFO_INTENSIV_C_SIII_012 3. Pentru ca soluţia este eficientă din punct de vedere al spaţiului de memorie utilizat, se vor folosi doar variabile E_INFO_INTENSIV_PASCAL_SIII_012 simple. Pentru a fi eficient din puncte de vedere al timpului de execuţie se va face o singură parcurgere a fişierelor f1 şi f2 folosind un algoritm similar cu cel de interclasare. E_INFO_INTENSIV_C_SIII_012 4. Se citeşte pe rând câte un număr de la tastatură, iar dacă acesta are toate cifrele egale, se va mări un contor. E_INFO_INTENSIV_PASCAL_SIII_012 Valoare acestui contor va fi la final afişată pe ecran. E_INFO_INTENSIV_C_SIII_013 3. Se va determina folosind o formulă matematică grupa din care face parte numărul cerut, apoi se determină poziţia E_INFO_INTENSIV_PASCAL_SIII_013 acestuia în cadrul grupei. Nu se va face o generare efectivă a şirului, ci se determină valoarea cerută doar prin calcule matematice. Se citeşte pe rând câte un număr din fişierul de intrare, E_INFO_INTENSIV_C_SIII_013 4. se elimină apoi cifrele impare din acesta. Dacă numărul E_INFO_INTENSIV_PASCAL_SIII_013 rezultat în urma acestor transformări este nenul se scrie în fişierul de ieşire. Se va contoriza într-un vector de câte ori apare fiecare E_INFO_INTENSIV_C_SIII_014 3. cifră în şirul citit. Se va afişa apoi şirul cerut, volosind E_INFO_INTENSIV_PASCAL_SIII_014 acest vector. Se citeşte pe rând câte un număr din fişierul de intrare. E_INFO_INTENSIV_C_SIII_014 4. Se afişează apoi pe ecran, iar dacă pe linia curentă s-au E_INFO_INTENSIV_PASCAL_SIII_014 scris deja 5 valori se trece la linie nouă. Se verifică apoi dacă suma cifrelor numărului curent este număr par, caz în care se măreşte un contor. Se trece apoi la următorul număr din fişier. În final se va afişa valoarea contorului pe o linie nouă de pe ecran. Se parcurg numerele din intervalul [1,n] şi în cazul în E_INFO_INTENSIV_C_SIII_015 3. care valoarea curentă are mai mulţi divizori decât E_INFO_INTENSIV_PASCAL_SIII_015 numărul maxim de divizori se modifică valoarea maximului şi se memorează valoarea curentă care are acest număr de divizori. Se vor folosi două variabile x şi y care vor memora E_INFO_INTENSIV_C_SIII_015 4. ultimele două numere prime. Se citesc pe rând numerele E_INFO_INTENSIV_PASCAL_SIII_015 din fişier, iar la întâlnirea unui număr prim se actualizează valorile variabilelor x şi y. În final dacă s-au întâlnit cel puţin două numere prime se vor afişa ultimele două, în caz contrar se va afişa mesajul corespunzător. E_INFO_INTENSIV_C_SIII_016 3. Subprogramul poate determina numărul cerut, parcurgând toate elementele tabloului unidimensional şi E_INFO_INTENSIV_PASCAL_SIII_016 contorizând acele valori care respectă condiţia impusă. E_INFO_INTENSIV_C_SIII_016 4. Deoarece fişierul conţine maximum 10000 de numere cu maximum 9 cifre fiecare, nu este corectă memorarea E_INFO_INTENSIV_PASCAL_SIII_016 într-un tablou unidimensional a cifrelor tuturor numerelor din fişier şi sortarea descrescătoare a acestuia. Se obţine punctaj parţial pentru o soluţie care abordează o astfel de metodă. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. E_INFO_INTENSIV_C_SIII_017 3. Subprogramul poate determina numărul cerut, parcurgând toate elementele vectorului şi contorizând E_INFO_INTENSIV_PASCAL_SIII_017 acele valori care respectă condiţia impusă. E_INFO_INTENSIV_C_SIII_017 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_017 parţial pentru o soluţie care memorează numerele citite din fişier într-un tablou unidimensional, pastrează într-o variabilă auxiliară primul element al tabloului, sortează crescător tabloul şi determină poziţia în tablou a elementului păstrat anterior în variabila auxiliară. E_INFO_INTENSIV_C_SIII_018 3. Subprogramul poate determina numărul cerut, calculând media aritmetică a tuturor elementelor tabloului E_INFO_INTENSIV_PASCAL_SIII_018 unidimensional şi contorizând apoi acele valori ale tabloului care respectă condiţia impusă. E_INFO_INTENSIV_C_SIII_018 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_018 parţial pentru o soluţie care memorează numerele citite din fişier într-un tablou unidimensional, sortează descrescător tabloul şi determină poziţia în tablou a valorii memorate în variabila k. E_INFO_INTENSIV_C_SIII_019 3. O posibilă rezolvare foloseşte principiul sortării unui vector prin metoda bulelor, interschimbând 2 elemente E_INFO_INTENSIV_PASCAL_SIII_019 vecine, dacă un element negativ se află imediat după unul pozitiv. E_INFO_INTENSIV_C_SIII_019 4. Întrucât numărul de numere din fiecare fişier este foarte mare, nu este corectă memorarea acestor numere în E_INFO_INTENSIV_PASCAL_SIII_019 tablouri unidimensionale, în vederea concatenării şi sortării acestor tablouri. O rezolvare care se bazează pe acest pricipiu va primi punctaj parţial. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. E_INFO_INTENSIV_C_SIII_020 3. O posibilă rezolvare foloseşte principiul sortării unui vector prin metoda bulelor, interschimbând 2 elemente E_INFO_INTENSIV_PASCAL_SIII_020 vecine, dacă un element nenul se află imediat după unul nul. E_INFO_INTENSIV_C_SIII_020 4. Întrucât numărul de numere din fiecare fişier este foarte mare, nu este corectă memorarea acestor numere în E_INFO_INTENSIV_PASCAL_SIII_020 tablouri unidimensionale, în vederea determinării elementelor comune acestor tablouri. O rezolvare care se bazează pe acest principiu va primi punctaj parţial. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. E_INFO_INTENSIV_C_SIII_021 3. p1=n; cât timp p1 nu e prim p1=p1-1 p2=n; cât timp p2 nu e prim p2=p2+1 E_INFO_INTENSIV_PASCAL_SIII_021 rezultatul = p2-p1 E_INFO_INTENSIV_C_SIII_021 4a. s=0, pt.i=1,k s=s+xi; smax=s; imax=1 E_INFO_INTENSIV_PASCAL_SIII_021 pt,. i=k+1,n-k+1 s=s+xi-xi-k dacă s>smax smax=s; imax=i scrie imax E_INFO_INTENSIV_C_SIII_021 4b. Algoritmul propus calculează suma maximă în loc de media aritmetică maximă, printr-o simgură parcurgere a E_INFO_INTENSIV_PASCAL_SIII_021 şirului, reţinând suma maximă şi indicele primului termen al acestei sume.La calculul unei sume noi se adună doar un termen şi se scade unul din suma precedentă E_INFO_INTENSIV_C_SIII_022 3a. Se calculează exponentul lui 5 din descompunerea în factori primi a lui n!. Acesta este [n/5]+[n/52]+[n/53]+... E_INFO_INTENSIV_PASCAL_SIII_022 E_INFO_INTENSIV_C_SIII_022 3b. n=5; cât timp nz(n) < k n=n+5 E_INFO_INTENSIV_PASCAL_SIII_022 E_INFO_INTENSIV_C_SIII_022 4. p=1 cât timp p*2<=b p=p*2 E_INFO_INTENSIV_PASCAL_SIII_022 dacă p>=a scrie p altfel scrie 0 E_INFO_INTENSIV_C_SIII_023 3a. aux=x[1] pt. i=1,n-1 x[i]=x[i+1] E_INFO_INTENSIV_PASCAL_SIII_023 x[n]=aux E_INFO_INTENSIV_C_SIII_023 3b. shift(n,x) pune pe poziţia n pe x[1], iar pe prima poziţie pe x[2]; E_INFO_INTENSIV_PASCAL_SIII_023 shift(n-1,x) pune pe poziţia n-2 pe x[2] apoi shift(n-2,x), ... E_INFO_INTENSIV_C_SIII_023 4. pt. i=1,n disjunct=1 E_INFO_INTENSIV_PASCAL_SIII_023 pt. j=1,n dacă i≠j şi ai∈[aj, bj] sau bi∈[aj, bj] disjunct=0 dacă disjunct=0 scrie ai, bi E_INFO_INTENSIV_C_SIII_024 3a. Subrogramul are 5 parametri: doi parametri de intrare n şi x şi 3 parametri de ieşire (de tip referinţă) maxi, mini, E_INFO_INTENSIV_PASCAL_SIII_024 sum. Minimul, maximul şi suma se calculează printr-o parcurgere a şirului x E_INFO_INTENSIV_C_SIII_024 3b. După citirea datelor se apelează p(n,x,mini,maxi,sum) şi se calculează media cu (sum-mini-maxi)/(n-2) E_INFO_INTENSIV_PASCAL_SIII_024 E_INFO_INTENSIV_C_SIII_024 4. După citirea datelor cu memorarea tabloului într-un vector x se parcurge vectorul până la găsirea primului E_INFO_INTENSIV_PASCAL_SIII_024 termen >=a. dacă nu e <=b se afişează NU, altfel se afişează termenul respectiv. E_INFO_INTENSIV_C_SIII_025 3. nr=0; par=0 pentru i=0,n-1 execută E_INFO_INTENSIV_PASCAL_SIII_025 dacă ai mod 2 = 0 atunci par=1; nr=nr*10+ai dacă par=0 returnează -1 altfel returnează nr E_INFO_INTENSIV_C_SIII_025 4b. Se porneşte de la fracţia x/1 şi prin max. 7 înmulţiri se obţin două numere întregi. Simplificarea fracţiei obţinute E_INFO_INTENSIV_PASCAL_SIII_025 se face calculând cmmdc cu algoritmul lui Euclid. E_INFO_INTENSIV_C_SIII_025 4a. numarator=x; numitor=1 E_INFO_INTENSIV_PASCAL_SIII_025 cât timp numarator ≠ [numărător] numitor=numitor*10; numărator=numarator*10 d=cmmdc(numarator, numitor) scrie numarator/d, numitor/d Se afişează şirul n*k, n*(k-1), ... ,n*1 E_INFO_INTENSIV_C_SIII_026 3. E_INFO_INTENSIV_PASCAL_SIII_026 Subprogramul sterge realizează deplasarea celor n-j E_INFO_INTENSIV_C_SIII_026 4. elemente aflate în vector, după secvenţa care se şterge, E_INFO_INTENSIV_PASCAL_SIII_026 la începutul acesteia (începând cu poziţia i). Numărul de elemente se micşorează cu o valoare egală cu numărul de elemente ale secvenţei eliminate (j-i+1). În programul principal se identifică, pentru fiecare element vi secvenţa care urmează şi este formată din elemente cu aceeaşi valoare şi se sterge. Rămân astfel doar elemente distincte. Se împarte numărul y la 10 până când acesta devine E_INFO_INTENSIV_C_SIII_027 3. subunitar. Funcţia returnează suma dintre x şi valoarea E_INFO_INTENSIV_PASCAL_SIII_027 variabilei y după transformarea menţionată anterior. Numărul de numere întregi dintr-un interval (x;y) este E_INFO_INTENSIV_C_SIII_027 4. egal cu y-1-x+1+1. E_INFO_INTENSIV_PASCAL_SIII_027 Este suficient să actualizăm acestă variabila care va memora valoarea cerută pentru fiecare pereche de numere aflate pe poziţii consecutive în şirul numerelor din fişier, numere ce reprezintă capetele unor intervale ce nu conţin nici un alt interval determinat de numerele din fişier. Algoritmul este eficient din punct de vedere al memoriei utilizate (complexitate O(1)) întrucât utilizeză un număr constant de variabile simple (nestructurate), numărul acestora nedepinzând de numărul de numere din fişier. Numărăm elementele x[i] din şirul de numere x, ce au E_INFO_INTENSIV_C_SIII_028 3. proprietatea s-x[i]=x[i]*(n-1) unde s este suma celor n E_INFO_INTENSIV_PASCAL_SIII_028 elemente. Este posibil ca această sumă să depăşească domeniul aferent tipului de date ales şi de aceea verificăm dacă elementul x[i] are proprietatea n x[ j ] x[i ] ∑ j =1 n − −1 n −1 = x[i ] .
E_INFO_INTENSIV_C_SIII_028 4. Pentru a verifica dacă numărul x este „aproape prim”,
calculăm primul său divizor y mai mare decât 1 şi E_INFO_INTENSIV_PASCAL_SIII_028 determinăm z=x/y. Numărul z trebuie să fie prim şi diferit de y. Se observă că un număr z este prim dacă prim(z)=z. Citim şirul de valori şi actualizăm la fiecare pas valoarea variabilei ce reţine maximul „aproape prim”. Valoarea returnată de subprogram poate fi obţinută prin E_INFO_INTENSIV_C_SIII_029 3. parcurgerea intervalului [a;b] numărarea elementelor x E_INFO_INTENSIV_PASCAL_SIII_029 din acest interval cu proprietatea că x%c=0 sau utilizând o formulă directă de calcul b/c-a/c+1. Verificăm mai întâi dacă este îndeplinită condiţia necesară E_INFO_INTENSIV_C_SIII_029 4. m≤n şi, în caz afirmativ, continuăm cu citirea celor n E_INFO_INTENSIV_PASCAL_SIII_029 numere care formează primul tablou. Citim pe rând câte un element x de pe linia a treia din fişier. Dacă valoarea acestuia este mai mică decât valaorea elementului curent din A atunci răspunsul va fi NU şi parcurgerea se încheie, altfel scădem elementul curent din A din x şi trecem pe elementul următor în vectorul A. Citirea unui nou element x de pe linia a treia din fişier se face atunci când elementul curent x este nul. Răspunsul DA va fi afişat atunci când parcurgerea celor două şiruri se încheie simultan. Algoritmul este liniar pentru că face cel mult o trecere simultană prin cei doi vectori, trecere absolut necesară atunci când proprietatea cerută este îndeplinită.
Suprogramul va calcula suma primelor i-1 elemente şi
E_INFO_INTENSIV_C_SIII_030 3. ultimelor (n-j) elemente din tabloul unidimensional E_INFO_INTENSIV_PASCAL_SIII_030 transmis ca parametru. Pentru determinarea numărului minim de intervale nr E_INFO_INTENSIV_C_SIII_030 4. iniţializăm o variabilă p cu partea întreagă a primului E_INFO_INTENSIV_PASCAL_SIII_030 număr real din fişier. Această variabilă se va modifica (p=[x])atunci când numărul x citit din fişier se găseşte în afara intervalului [p;p+1].Variabila nr se măreşte cu o unitate de fiecare dată când se modifică valoarea variabilei p. E_INFO_INTENSIV_C_SIII_031 2. Se urmăresc apelurile recursive, determinându-se valoarea returnată de subprogram. E_INFO_INTENSIV_PASCAL_SIII_031 E_INFO_INTENSIV_C_SIII_031 3. Se ordonează crescător elementele teabloului unidimensional şi se calculează apoi suma primelor m E_INFO_INTENSIV_PASCAL_SIII_031 (cele mai mici) elemente. E_INFO_INTENSIV_C_SIII_031 4. Se citesc datele din fişieriar şi se calculează capetele segmentului de intersecţie. Acesta va fi detrminat de E_INFO_INTENSIV_PASCAL_SIII_031 valoarea maximă a capetelor din stânga a tuturor segmentelor date şi valorarea minimă a capetelor din dreapta. E_INFO_INTENSIV_C_SIII_032 2. Se urmăresc apelurile recursive, determinându-se valoarea returnată de subprogram. E_INFO_INTENSIV_PASCAL_SIII_032 E_INFO_INTENSIV_C_SIII_032 3. Se parcurg numerele naturale mai mari decât x, până la întâlnirea primului număr prim întâlnit. Acesta va fi cel E_INFO_INTENSIV_PASCAL_SIII_032 mai mic număr prim, strict mai mare decât x.
E_INFO_INTENSIV_C_SIII_032 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_032 parţial pentru o soluţie care memorează numerele citite din fişier într-un tablou, apoi parcurge tabloul şi determină cele mai mari două valori ale acestuia. E_INFO_INTENSIV_C_SIII_033 2. Se urmăresc apelurile recursive, determinându-se valoarea returnată de subprogram. E_INFO_INTENSIV_PASCAL_SIII_033 E_INFO_INTENSIV_C_SIII_033 3. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_033 parţial pentru o soluţie care memorează toate numerele citite din fişier într-un tablou şi folosind apelul subprogramului max_cif, detrmină afişarea celui mare număr de trei cifre memorat în fişier. E_INFO_INTENSIV_C_SIII_034 2. Se urmăresc apelurile recursive, determinându-se valoarea returnată de subprogram. E_INFO_INTENSIV_PASCAL_SIII_034 E_INFO_INTENSIV_C_SIII_034 3. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_034 parţial pentru un subprogram care determină valoarea maximă a unei progresii prin parcurgerea element cu element a tabloului. Se citesc datelor din fişier şi se determină acea valoare maximă care este şi termen al unei progresii aritmetice. E_INFO_INTENSIV_C_SIII_035 3. Se citesc din fişier datele existente, iar dintre valorile memorate pe a doua linie a fişierului, se vor afişa păe E_INFO_INTENSIV_PASCAL_SIII_035 ecran doar cele care îndeplinesc condiţiile enunţate de problemă. E_INFO_INTENSIV_C_SIII_035 4. O posibilă rezolvare constă în memorarea într-un tablou unidimensional a valorilor detrminate prin calculul sumei E_INFO_INTENSIV_PASCAL_SIII_035 divizorilor fiecărui număr citit de la tastatură. Se ordonează apoi crescător tabloul astfel construit şi se afişează pe ecran valorile în formatul cerut. E_INFO_ INTENSIV_C_SIII_036 2. Din exemplu se deduce modalitatea de generare, şi se adaptează pentru valoarea cerută. E_INFO_ INTENSIV_PASCAL_SIII_036 E_INFO_ INTENSIV_C_SIII_036 3. Subprogramul determină ultima cifră pară din număr. Se i-au cifrele numărului pe rând, începând cu cifra unităţilor E_INFO_ INTENSIV_PASCAL_SIII_036 şi se verifică dacă acestea respectă condiţia enunţului. E_INFO_ INTENSIV_C_SIII_036 3. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_ INTENSIV_PASCAL_SIII_036 parţial pentru o soluţie care memorează într-un vector, pentru fiecare număr citit din fişier cifra pară, apoi sortează descrescător, elementele acestuia. E_INFO_ INTENSIV_C_SIII_037 2. Se urmăresc apelurile recursive, determinându-se valoarea afişată. E_INFO_ INTENSIV_PASCAL_SIII_037 E_INFO_ INTENSIV_C_SIII_037 3. Se declară un tablou unidimensional cu cel mult 100 elemente. O rezolvare posibilă citeşte valorile lui n E_INFO_ INTENSIV_PASCAL_SIII_037 respectiv k şi toate elementele tabloului, apoi parcurge tabloul permutând elementele acestuia conform enunţului. E_INFO_ INTENSIV_C_SIII_037 4. Se scrie antetul subprogramului, urmărind cerinţa. E_INFO_ INTENSIV_PASCAL_SIII_037 O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi le reţine într-un tablou unidimensional. Se parcurge vectorul şi prin apeluri ale funcţiei se determină poziţia primului element care respectă condiţia din enunţ. În mod similar se parcurge şirul de la sfârsit şi se determină şi al doilea element cerut. E_INFO_ INTENSIV_C_SIII_038 2. Se urmăresc apelurile recursive, determinându-se valoarea afişată. E_INFO_ INTENSIV_PASCAL_SIII_038 E_INFO_ INTENSIV_C_SIII_038 3. Subprogramul adaugă la numărul pe care îl formăm cifre ale numărului dat care respectă proprietatea din enunţ. E_INFO_ INTENSIV_PASCAL_SIII_038 E_INFO_ INTENSIV_C_SIII_038 4. Se scrie definiţia completă a subprogramului, urmărind cerinţa. E_INFO_ INTENSIV_PASCAL_SIII_038 O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi le reţine într-un tablou unidimensional. Se sortează vectorul utilizând apeluri ale subprogramului. E_INFO_ INTENSIV_C_SIII_039 2. Se urmăresc apelurile recursive, determinându-se valoarea afişată. E_INFO_ INTENSIV_PASCAL_SIII_039 E_INFO_ INTENSIV_C_SIII_039 3. O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi le reţine într-un tablou unidimensional. Se E_INFO_ INTENSIV_PASCAL_SIII_039 parcurge vectorul şi se compară două câte douâ elementele pare pentru a verifica dacă sunt în ordine crescătoare. E_INFO_ INTENSIV_C_SIII_039 4. Se scrie antetul subprogramului, urmărind cerinţa. E_INFO_ INTENSIV_PASCAL_SIII_039 Se citeşte numărul, se elimină câte o cifră şi pentru fiecare număr astfel determinat se apelează funcţia. Se afişează acele valori pentru care este respectată condiţia din enunţ. E_INFO_ INTENSIV_C_SIII_040 2. Se urmăresc apelurile recursive, determinându-se valoarea afişată. E_INFO_ INTENSIV_PASCAL_SIII_040 E_INFO_ INTENSIV_C_SIII_040 3. O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi le reţine într-un tablou unidimensional. Se E_INFO_ INTENSIV_PASCAL_SIII_040 parcurge vectorul şi se compară două câte douâ elementele pare pentru a verifica dacă sunt în ordine crescătoare şi se compară două câte două elementele impare pentru a verifica dacă sunt în ordine descrescătoare. E_INFO_ INTENSIV_C_SIII_040 4. Se scrie definiţia completă a subprogramului cerut. E_INFO_ INTENSIV_PASCAL_SIII_040 Se citeşte numărul n. Se apelează subprogramul sdiv verificând apoi dacă rezultatul apelului este un număr prim (direct în program sau cu ajutorul unui alt subprogram complet definit). E_INFO_INTENSIV_C_SIII_041 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Elementul maxim E_INFO_INTENSIV_PASCAL_SIII_041 cât şi numarul de apariţii ale acestuia trebuie sa se determine la o singurǎ parcurgere a fişierului fǎrǎ a mai utiliza vreun tablou. E_INFO_INTENSIV_C_SIII_042 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Elementele unice E_INFO_INTENSIV_PASCAL_SIII_042 trebuie determinate la o singurǎ parcurgere a fişierului. Se poate utiliza un vector caracteristic. E_INFO_INTENSIV_C_SIII_043 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Cifrele ce formeazǎ E_INFO_INTENSIV_PASCAL_SIII_043 numǎrul trebuie determinate la o singurǎ parcurgere a fişierului. Se poate utiliza un vector caracteristic. E_INFO_INTENSIV_C_SIII_044 3. Pentru a<b, se afişează pătratele tuturor numerelor prime E_INFO_INTENSIV_PASCAL_SIII_044 din intervalul [ a, b ]. E_INFO_INTENSIV_C_SIII_044 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Cifrele ce apar în E_INFO_INTENSIV_PASCAL_SIII_044 scrierea numerelor trebuie determinate la o singurǎ parcurgere a fişierului. Se poate utiliza un vector caracteristic. E_INFO_INTENSIV_C_SIII_045 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Numerelor trebuie E_INFO_INTENSIV_PASCAL_SIII_045 sortate la o singurǎ parcurgere a fişierului. Se poate utiliza un vector caracteristic. E_INFO_INTENSIV_C_SIII_046 2. Se calculează suma primilor termeni ai unei progresii aritmetice. E_INFO_INTENSIV_PASCAL_SIII_046 E_INFO_INTENSIV_C_SIII_046 3. Se citeşte de la tastatură k, din fişier n. Pentru fiecare număr citit din fişier se calculează numărul de divizori (se E_INFO_INTENSIV_PASCAL_SIII_046 poate folosi un subprogram) şi, dacă acesta este cel puţin egal cu k, numărul citit se memorează în vector, pe o nouă poziţie. E_INFO_INTENSIV_C_SIII_046 4. a) Primul parametru, nr, este transmis prin valare, ceilalţi doi, nc şi sc, prin referinţă. E_INFO_INTENSIV_PASCAL_SIII_046 b) Se poate demonstra că o cifră c din număr ce respectă condiţia cerută, verifică şi relaţia c = sc / nc. E_INFO_INTENSIV_C_SIII_047 3. Pentru fiecare număr citit din fişier, se împarte acel număr cu k de câte ori este posibil, urmărind ca, în final, E_INFO_INTENSIV_PASCAL_SIII_047 câtul să fie egal cu 1. E_INFO_INTENSIV_C_SIII_047 4. a) Primul parametru, nr, este transmis prin valare, al doilea, s, prin referinţă. E_INFO_INTENSIV_PASCAL_SIII_047 b) O soluţie posibilă constă în citirea şi memoraea celor n numere. La o parcurgere se determină suma maximă comparând valorile furnizate la apelurile subprogramului cif, cu un maxim de referinţă. La a doua parcurgere, se afişează numerele care au suma cifrelor egală cu maximul determinat. E_INFO_INTENSIV_C_SIII_048 3. a) Parametri se transmit prin valoare. Rezultatul este întreg. Subprogramul poate fi recursiv. E_INFO_INTENSIV_PASCAL_SIII_048 b) Se determină cel mai mare divizor comun dintre fiecare număr x aparţinând intervalului [1,n] şi n. Se numără valorile pentru care cel mai mare divizor comun este 1. E_INFO_INTENSIV_C_SIII_048 4. Pentru fiecare număr nr, citit dintre cele n, se determină frecvenţa de apariţie. Se afişează elementele care au E_INFO_INTENSIV_PASCAL_SIII_048 frecvenţa de apariţe egală cu 1. E_INFO_INTENSIV_C_SIII_049 3. Se memorează cele n numere citite, se ordonează crescător şirul S memorat şi apoi se verifică pentru E_INFO_INTENSIV_PASCAL_SIII_049 fiecare pereche de elemente vecine relaţia Si-Si-1=i-1. E_INFO_INTENSIV_C_SIII_049 4. a) Primul parametru se transmite prin valoare, al doilea prin refrinţă. E_INFO_INTENSIV_PASCAL_SIII_049 b) Se pot determina, pe măsură ce se citesc numerele, cifra maximă a fiecăruia (furnizată la apelul cmax), obţinând prin comparări, în două variabile, maximul acestor rezultate şi valoarea cea mai mică pentru care cmax furnizează o cifră egală cu maximul determinat. E_INFO_INTENSIV_C_SIII_050 3. b) Pentru a<b, se parcurge intervalul [a,min(n,b)]. Se verifică divizibilitatea lui n cu toate numerele din interval E_INFO_INTENSIV_PASCAL_SIII_050 cu ajutorul apelurilor funcţiei divxy. E_INFO_INTENSIV_C_SIII_050 4. Se poate utilize un vector de frecvenţe. Se afişează elementele care au frecvenţa mai mare decât 1. E_INFO_INTENSIV_PASCAL_SIII_050 3 a) Pentru calcularea pătratului distantei se foloseste E_INFO_INTENSIV_C_SIII_051 E_INFO_INTENSIV_PASCAL_SIII_051 formula: ( xa − xb) 2 + ( ya − yb) 2 . b) Se pot calcula cele 6 distanţe posibile şi, dacă cele mai mici 4 dintre ele sunt egale între ele şi cele două mai mari sunt egale între ele, atunci punctele pot forma un pătrat. E_INFO_INTENSIV_C_SIII_051 4 Se pot memora toate valorile pare într-un alt tablou b, iar E_INFO_INTENSIV_PASCAL_SIII_051 cele impare într-un alt tablou c, afişându-se toate perechile posibile bi,bj şi toate perechile posibile ci,cj E_INFO_INTENSIV_C_SIII_052 3 a) Subprogramul testează, prin comparări de elemente, E_INFO_INTENSIV_PASCAL_SIII_052 dacă oricare două componente ale lui a au valori diferite. b) Se memorează toate numerele din fişier într-un vector şi apoi se fac apeluri ale subporgramului mult pentru valori succesive corespunzătoare parametrului n până ce funcţia returnează valoarea false/0. E_INFO_INTENSIV_C_SIII_052 4 Se poate calcula x din şirul x, x+1, x+2, x+k-1 astfel încât E_INFO_INTENSIV_PASCAL_SIII_052 suma termenilor şirului să fie egală cu n.
E_INFO_INTENSIV_C_SIII_053 3b Se numără perechile care au cmmdc=1
E_INFO_INTENSIV_PASCAL_SIII_053
E_INFO_INTENSIV_C_SIII_053 4 Se poate memora şirul de numere din fişier de două ori,
E_INFO_INTENSIV_PASCAL_SIII_053 într-un vector de lungime dublă. Fiecare permutare va fi o subsecvenţă de lungime n a acestui vector. E_INFO_INTENSIV_C_SIII_054 3 Dacă numărul nu este palindrom, se pot determina: cel E_INFO_INTENSIV_PASCAL_SIII_054 mai mare palindrom mai mic decât n şi cel mai mic palindrom mai mare decât n, alegându-se cel mai apropiat de n. E_INFO_INTENSIV_C_SIII_054 4 Se pot sorta construi toate sumele de câte două elemente E_INFO_INTENSIV_PASCAL_SIII_054 diferite din şir.
E_INFO_INTENSIV_C_SIII_055 3a Se construieste un tablou cu toate cifrele numarului si apoi
E_INFO_INTENSIV_PASCAL_SIII_055 se ordoneaza crescator elementele tabloului.
E_INFO_INTENSIV_C_SIII_055 4 O soluţie posibilă citeşte numerele date şi construieşte în
memorie cele două tablouri, apoi pe al treilea, pe baza E_INFO_ INTENSIV_PASCAL_SIII_055 relaţiei date. E_INFO_INTENSIV_C_SIII_056 3. Se citesc numerele din fişier, până la sfârşitul acestuia şi se reţin cele pare într-un vector care este apoi sortat. E_INFO_INTENSIV_PASCAL_SIII_056 Componentele vectorului sunt apoi afişate pe ecran. Având în vedere că numerele din fişier au cel mult 4 cifre fiecare, problema se poate rezolva şi cu un vector de frecvenţe (f[i]=numărul de apariţii ale lui i în fişier). E_INFO_INTENSIV_C_SIII_056 4. Rezultatul cerut se calculează apelând funcţia numar pentru b şi a-1. E_INFO_INTENSIV_PASCAL_SIII_056 E_INFO_INTENSIV_C_SIII_057 3. Se citesc numerele din fişier, până la sfârşitul acestuia, se reţin într-un vector şi se generează toate sumele a E_INFO_INTENSIV_PASCAL_SIII_057 câte două elemente din vector. Având în vedere că numerele din fişier au cel mult 4 cifre fiecare, sumele vor fi mai mici decât 20000 şi deci se poate folosi un vector ale cărui componente au valori 0 sau 1: f[i]=1 dacă şi numai dacă i se poate obţine ca sumă de numere din fişier. O altă variantă de rezolvare este reţinerea sumelor într-un vector, sortarea acestuia şi eliminarea dublurilor (prin modificarea vectorului sau direct la afişare). E_INFO_INTENSIV_C_SIII_057 4. Rezultatul cerut se calculează apelând funcţia multiplu pentru b şi a-1. E_INFO_INTENSIV_PASCAL_SIII_057 E_INFO_INTENSIV_C_SIII_058 3. Se citesc numerele din fişier, până la sfârşitul acestuia. Se păstrează (fiecare fiind reţinut în altă variabilă) cele E_INFO_INTENSIV_PASCAL_SIII_058 mai mici 3 numere găsite până la ultima citire. Se compară ultimul număr citit cu cele 3 variabile şi, dacă este cazul se modifică valorile acestora. O altă variantă de rezolvare, mai puţin eficientă, se bazează pe un vector în care sunt reţinute toate numerele citite, apoi vectorul este ordonat crescător şi se afişează primele 3 componente. E_INFO_INTENSIV_C_SIII_058 4. Rezultatul cerut se calculează apelând funcţia divizor şi luând în considerare faptul că un număr prim are ca E_INFO_INTENSIV_PASCAL_SIII_058 divizori doar pe 1 şi pe el însuşi. E_INFO_INTENSIV_C_SIII_059 3. Se citesc numerele din fişier, până la sfârşitul acestuia. Se reţin pe parcursul citirii cele mai mari 3 numere găsite E_INFO_INTENSIV_PASCAL_SIII_059 până la momentul respectiv. Se compară fiecare număr citit cu cele 3 variabile şi, dacă este cazul, se modifică valorile acestora. O altă variantă de rezolvare, mai puţin eficientă, reţine într-un vector toate numerele citite, apoi ordonează vectorul şi se afişează ultima cifră a produsului primelor/ultimelor 3 componente. E_INFO_INTENSIV_C_SIII_059 4. Rezultatul cerut se calculează apelând funcţia divizor şi luând în considerare faptul că un număr prim are ca E_INFO_INTENSIV_PASCAL_SIII_059 divizori doar pe 1 şi pe el însuşi. E_INFO_INTENSIV_C_SIII_060 3. Se citesc numerele din fişier, până ce se întâlneşte valoarea x sau până la sfârşitul acestuia. E_INFO_INTENSIV_PASCAL_SIII_060 E_INFO_INTENSIV_C_SIII_060 4. Funcţia radical furnizează prin intermediul lui x partea întreaga a radicalului lui a. În programul principal trebuie E_INFO_INTENSIV_PASCAL_SIII_060 verificat dacă prin ridicarea la pătrat a rezultatului funcţiei se obţine n. E_INFO_INTENSIV_C_SIII_061 a) se determină ultima cifră a părţii întregi. 3 E_INFO_INTENSIV_PASCAL_SIII_0 b) programul calculează diferenţa dintre partea 61 întreagă a celor două numere prin apeluri ale funcţiei cifra. Se va avea în vedere şi situaţia în care unul dintre numerele citite este 10. E_INFO_INTENSIV_C_SIII_061 Se poate utiliza o matrice de frecvenţe (fij=numărul 4 E_INFO_INTENSIV_PASCAL_SIII_0 de apariţii ale perechii formate din vocala a i-a 61 urmată de vocala a j-a) sau un vector de frecvenţe (vi= numărul de apariţii ale perechii formate din vocala cu numărul de ordine i div 5, urmată de vocala cu numărul i mod 5, cu numerotare de la 0) E_INFO_INTENSIV_C_SIII_062 Subprogramul generează primii [3n/2] termeni ai 3 E_INFO_INTENSIV_PASCAL_SIII_0 şirului, memorând doar pe cei impari (ignoră termenii 62 de rang divizibil cu 3) E_INFO_INTENSIV_C_SIII_062 O soluţie posibilă utilizează un vector de apariţii 4 E_INFO_INTENSIV_PASCAL_SIII_0 a0,a1,...a99 iniţializat cu zero. Un element a[i] va 62 memora valoarea 1 la citirea din fişier a numărului i. Rezultatele vor fi afişate prin parcurgerea succesivă a vectorului de la primul la ultimul element, pentru numerele impare şi apoi în ordine inversă pentru numerele pare. E_INFO_INTENSIV_C_SIII_063 a) o posibilitate de implementare a subprogramului 3 E_INFO_INTENSIV_PASCAL_SIII_0 verif se bazează pe extragerea cifrelor numărului 63 într-un vector şi compararea tuturor secvenţelor de 3 cifre alăturate. b) programul extrage primele 3 cifre ale numărului prin împărţire la 1000 şi apelează funcţia verif. E_INFO_INTENSIV_C_SIII_063 Se reţin, pe parcursul citirii, ultimii 3 termeni din şir, 4 E_INFO_INTENSIV_PASCAL_SIII_0 verificând proprietatea din enunţ. 63 E_INFO_INTENSIV_C_SIII_064 O posibilitate de implementare a subprogramului 3 E_INFO_INTENSIV_PASCAL_SIII_0 diviz utilizează două structuri for imbricate pentru 64 obţinerea perechilor de numere şi apoi verificarea condiţiilor de divizibilitate.
E_INFO_INTENSIV_C_SIII_064 Programul realizează prelucrarea cerută citind pe
4 E_INFO_INTENSIV_PASCAL_SIII_0 rând din fişier câte un număr pe care îl compară cu 64 cel citit anterior. Dacă două numere citite consecutiv sunt în ordinea cerută în enunţ atunci se măreşte lungimea secvenţei altfel se compară cu un max.
E_INFO_INTENSIV_C_SIII_065 a) O posibilitate de implementare a subprogramului
3 E_INFO_INTENSIV_PASCAL_SIII_0 sfx utilizează extragerea ultimelor 3 cifre ale 65 numărului şi compararea acestora. b) se poate apela sfx pentru n, [n/10] şi [n/1000]. E_INFO_INTENSIV_C_SIII_065 Se reţin, pe parcursul citirii, ultimii 3 termeni din şir, 4 E_INFO_INTENSIV_PASCAL_SIII_0 verificând proprietatea din enunţ. 65 E_INFO_INTENSIV_C_SIII_066 2. Se urmăresc apelurile recursive, determinându-se valoarea cerută. E_INFO_INTENSIV_PASCAL_SIII_066 E_INFO_INTENSIV_C_SIII_066 3. Subprogramul poate determina numărul cerut parcurgând toate elementele tabloului şi determinând E_INFO_INTENSIV_PASCAL_SIII_066 maximul dintre divizorii comuni ai elementelor tabloului. E_INFO_INTENSIV_C_SIII_066 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate. Se obţine punctaj parţial pentru o soluţie E_INFO_INTENSIV_PASCAL_SIII_066 care memorează numerele citite din fişiere în tablouri, apoi parcurgem tablourile şi determinăm şi afişăm numărul de numere cu proprietatea cerută. E_INFO_INTENSIV_C_SIII_067 3. Subprogramul poate determina numărul cerut parcurgând toate elementele tabloului şi determinând E_INFO_INTENSIV_PASCAL_SIII_067 numărul de numere prime din tablou. E_INFO_INTENSIV_C_SIII_067 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate. Se obţine punctaj parţial pentru o soluţie E_INFO_INTENSIV_PASCAL_SIII_067 care memorează numerele citite într-un tablou şi prelucrează datele prin parcurgeri repetate ale tabloului. E_INFO_INTENSIV_C_SIII_068 3 Se poate apela subprogramul pentru fiecare rang, de la 1 la 8. E_INFO_INTENSIV_PASCAL_SIII_068 E_INFO_INTENSIV_C_SIII_068 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate. Se obţine punctaj parţial pentru o soluţie E_INFO_INTENSIV_PASCAL_SIII_068 care memorează numerele citite într-un tablou şi prelucrează datele prin parcurgeri repetate ale tabloului. E_INFO_INTENSIV_C_SIII_069 3. b) Se parcurg valorile n, n+1 etc, până ce se obţine un număr penttru care calcul returnează valoarea 0. E_INFO_INTENSIV_PASCAL_SIII_069 E_INFO_INTENSIV_C_SIII_069 4. Se afişează valorile pare pe parcursul citirii, cele impare fiind memorate şi afişate ulterior. E_INFO_INTENSIV_PASCAL_SIII_069 E_INFO_INTENSIV_C_SIII_070 3. Parametrul n va fi transmis prin adresă, iar x prin referinţă. E_INFO_INTENSIV_PASCAL_SIII_070 E_INFO_INTENSIV_C_SIII_070 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate. Se obţine punctaj parţial pentru o soluţie E_INFO_INTENSIV_PASCAL_SIII_070 care memorează numerele citite într-un tablou, apoi parcurge tabloul determinând cele două valori cerute. E_INFO_INTENSIV_C_SIII_071 3. a) Se verifică proprietatea impusă determinând inversul sau memorând cifrele într-un vector şi verificând simetria. E_INFO_INTENSIV_PASCAL_SIII_071 b) Pe parcursul citirii, pentru numerele care au proprietatea de palindrom, se determină valoarea maximă şi număr de apariţii. E_INFO_INTENSIV_C_SIII_072 3. a) Se va calcula discriminantul ecuaţiei şi în funcţie de valoarea acestuia se vor determina valorile soluţiilor. E_INFO_INTENSIV_PASCAL_SIII_072 b) Se poate determina ”grupul” x din care face parte termenul de rang k, prin rezolvarea ecuaţiei x(x+1)/2=k. Dacă se realizează cerinţa fără a utiliza subprogramul de la punctul a, generând termenii şirului până la poziţia k, se va obţine un punctaj parţial. E_INFO_INTENSIV_C_SIII_073 3. a) O metoda eficientă de determinare a poziţiei impune un grad de creativitate din partea concurentului. Pentru o E_INFO_INTENSIV_PASCAL_SIII_073 soluţie în care se determină poziţia prin parcurgerea tabloului se va obţine un punctaj parţial. c) Se obţine un punctaj parţial pentru soluţia care memorează numerele într-un tablou, apoi le sortează crescător şi le afişează în formatul cerut. E_INFO_INTENSIV_C_SIII_074 3. a) Parametrul n se transmite prin vloare, iar x prin referinţă. Subprogramul poate determina numărul cerut E_INFO_INTENSIV_PASCAL_SIII_074 comparând fiecare cifră a numărului cu o variabilă maxim ce se va iniţializa corespunzător. b) Se testează ca cifra maximă să nu depăşească 4. E_INFO_INTENSIV_C_SIII_074 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_074 parţial pentru o soluţie care memorează cifrele nenule citite din fişier într-un tablou, apoi ordonează crescător tabloul şi afişează numărul ţinând cont şi de numărul de cifre nule citite. E_INFO_INTENSIV_C_SIII_075 3. a) O metoda eficientă de determinare a poziţiei impune un grad de creativitate din partea concurentului. Pentru o E_INFO_INTENSIV_PASCAL_SIII_075 soluţie în care se determină ultima cifră a numărului ab folosind înmulţirea repetată sau funcţii predefinite se va obţine un punctaj parţial. c) Se adună ultima cifră a tuturor termenilor sumei E_INFO_INTENSIV_C_SIII_076 3. Subprogramul poate determina numărul cerut verificând şi numărând câte din cifrele numărului n se află în E_INFO_INTENSIV_PASCAL_SIII_076 intervalul cerut. E_INFO_INTENSIV_C_SIII_076 4. Pentru a obţine punctaj maxim se va utiliza o metodă ce presupune cât mai puţine operaţii de comparare. Se va E_INFO_INTENSIV_PASCAL_SIII_076 ţine cont de faptul că elementele de pe a doua linie a fişierului sunt ordonate crescător. Numerele de pe linia a treia a fisierului se caută în cele de pe linia a doua utilizând metoda căutării binare E_INFO_INTENSIV_C_SIII_077 3. Se deschide fişierul şi se citesc numerele din fişier, numărând valorile ce îndeplinesc proprietatea cerută. E_INFO_INTENSIV_PASCAL_SIII_077 E_INFO_INTENSIV_C_SIII_077 4. Pentru a obţine punctaj maxim se va utiliza un vector cu 100 de elemente în care se va contoriza numărul de E_INFO_INTENSIV_PASCAL_SIII_077 apariţii ale fiecărei valori. Se vor afişa acele valori care apar de cele mai multe ori. E_INFO_INTENSIV_C_SIII_078 3. Se citeşte numărul n. Se generează numere naturale consecutive începând cu valoarea 2 şi se vor afişa pe E_INFO_INTENSIV_PASCAL_SIII_078 ecran doar numerele prime dintre cele generate. Generarea şi afişarea se încheie după afişarea celui de- al n-lea număr prim. E_INFO_INTENSIV_C_SIII_078 4. Pentru a obţine punctaj maxim se va utiliza un vector cu 100 de elemente în care se va contoriza numărul de E_INFO_INTENSIV_PASCAL_SIII_078 apariţii ale fiecărei valori. Se vor afişa pe ecran toate valorile citite şi numărul de apariţii. E_INFO_INTENSIV_C_SIII_079 3. Se citesc numerele reale a şi b şi se construiesc a1 şi b1 obţinute prin interschimbarea părţii întregi cu partea E_INFO_INTENSIV_PASCAL_SIII_079 fracţionară în fiecare din cele două numere. Se va determina valoarea maximă dintre cele 4 numere reale. E_INFO_INTENSIV_C_SIII_079 4. Pentru a obţine punctaj maxim se va utiliza un vector c cu 100 de elemente în care se va contoriza numărul de E_INFO_INTENSIV_PASCAL_SIII_079 apariţii ale fiecărei valori. Iniţial toate elementeleo acestui vector se vor iniţializa cu valoarea 0.Se vor afişa pe ecran toate valorile naturale din intervalul [1,100] care nu au fost citite (valorile i pentru care c[i] are valoarea 0 ) E_INFO_INTENSIV_C_SIII_080 3. O rezolvare posibilă presupune definirea unei funcţii care verifică dacă un număr natural, transmis prin parametru, E_INFO_INTENSIV_PASCAL_SIII_080 este format din cifre egale sau nu. Se citesc numerele din fişier, se memorează acelea care au toate cifrele egale într-un vector, apoi se ordonează şi se afişează. E_INFO_INTENSIV_C_SIII_080 4. a) Parametrul n se transmite prin adresă, iar d prin referinţă. Se returnează 0 pentru n prim. E_INFO_INTENSIV_PASCAL_SIII_080 b) Pentru n neprim, divizorul cerut este n/d (d fiind calculat în subprogramul divi) E_INFO_INTENSIV_C_SIII_081 3. Subprogramul poate determina numărul cerut parcurgând toate numere din tablou care verifică E_INFO_INTENSIV_PASCAL_SIII_081 condiţia impusă. E_INFO_INTENSIV_C_SIII_081 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_081 parţial pentru o soluţie care memorează numerele citite din fişier într-un tablou sortat crescător, apoi parcurge tabloul, pentru determinarea numerelor cu proprietatea cerută. E_INFO_INTENSIV_C_SIII_082 3. Subprogramul poate determina numărul cerut parcurgând toate numere din tablou care verifică E_INFO_INTENSIV_PASCAL_SIII_082 condiţia impusă. E_INFO_INTENSIV_C_SIII_082 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_082 parţial pentru o soluţie care memorează numerele citite din fişier într-un tablou sortat crescător, apoi parcurge tabloul, pentru determinarea numerelor cu proprietatea cerută. E_INFO_INTENSIV_C_SIII_083 3. Subprogramul poate determina numărul cerut parcurgând toate numere din tablou care verifică E_INFO_INTENSIV_PASCAL_SIII_083 condiţia impusă. E_INFO_INTENSIV_C_SIII_083 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Se obţine punctaj E_INFO_INTENSIV_PASCAL_SIII_083 parţial pentru o soluţie care memorează numerele citite din fişier într-un tablou, precum şi numărul lor de pe fiecare linie din fişier; apoi parcurge tabloul, pentru determinarea numărului cu proprietatea cerută. E_INFO_INTENSIV_C_SIII_084 3. Programul poate determina numărul cerut parcurgând toate numere din tablou b care verifică condiţia E_INFO_INTENSIV_PASCAL_SIII_084 impusă(prima dată se parcurge tablou a, pentru determinarea sumei numerelor pare). E_INFO_INTENSIV_C_SIII_084 4. O rezolvare posibilă este să se parcurgă fiecare linie din fişier, să se calculeze cmmmc şi apoi se va afişa în E_INFO_INTENSIV_PASCAL_SIII_084 fişierul de ieşire. E_INFO_INTENSIV_C_SIII_085 3. Programul poate determina numărul cerut parcurgând toate numere din tablou b care verifică condiţia impusă E_INFO_INTENSIV_PASCAL_SIII_085 (prima dată se parcurge tablou a, pentru determinarea sumei numerelor pare). E_INFO_INTENSIV_C_SIII_085 4. O rezolvare posibilă este să se parcurgă fiecare linie din fişier, să se calculeze cmmdc şi apoi se vor afişa E_INFO_INTENSIV_PASCAL_SIII_085 numerele simplificate cu cmmdc în fişierul de ieşire. E_INFO_INTENSIV_C_SIII_086 3. Se paote construi numărul cerut cifră cu cifră, folosind puterile lui 10 corespunzătoare. E_INFO_INTENSIV_PASCAL_SIII_086 E_INFO_INTENSIV_C_SIII_086 4. Se citesc numerele din fişier, unul câte unul. Se compară fiecare valoare pară cu două valori de referinţă max1 şi E_INFO_INTENSIV_PASCAL_SIII_086 max2 (de exemplu), iniţializate cu 0. Se acordă punctaj parţial dacă se parcurge fişierul de două ori sau dacă se utilizează un tablou unidimensional pentru stocarea numerelor citite din fişier. E_INFO_INTENSIV_C_SIII_087 4. Se citesc numerele din fişier, numerele care au proprietatea cerută comparându-se cu un minim de E_INFO_INTENSIV_PASCAL_SIII_087 referinţă, reiniţializând sau incrementând corespunzător numărul de apariţii. Se acordă punctaj parţial dacă se parcurge fişierul de mai multe ori sau dacă se utilizează un tablou unidimensional pentru stocarea numerelor citite. E_INFO_INTENSIV_C_SIII_088 4. Se poate utiliza un vector de frecvenţe sau metoda descrisă la varianta 87. E_INFO_INTENSIV_PASCAL_SIII_088 E_INFO_INTENSIV_C_SIII_089 4. Se poate utiliza un vector de frecvenţe. Se obţine punctaj parţial pentru o soluţie în care se memorează toate E_INFO_INTENSIV_PASCAL_SIII_089 numerele mai mari decât k într-un tablou, se sortează tabloul şi apoi se parcurge tabloul pentru determinarea valorilor distincte. E_INFO_INTENSIV_C_SIII_090 3 b) Se determină prin apeluri ale funcţiei verif, valoarea minimă a lui a pentru care funcţia returnează valoarea 1. E_INFO_INTENSIV_PASCAL_SIII_090 E_INFO_INTENSIV_C_SIII_090 4. Se vor reţine doar ultimele două numere citite din fişier, în cazul numerelor pozitive, comparându-se suma lor cu E_INFO_INTENSIV_PASCAL_SIII_090 un maxim de referinţă. Se obţine punctaj parţial pentru o soluţie în care se memorează toate numerele într-un tablou şi se parcurge tabloul pentru determinarea valorilor cerute. E_INFO_INTENSIV_C_SIII_091 3. b) Programul va analiza x mod 10 şi va apela funcţia par pentru [x/10] E_INFO_INTENSIV_PASCAL_SIII_091 E_INFO_INTENSIV_C_SIII_091 4 Se citeşte primul număr din fişier, se iniţializează max cu valoarea citită, iar lin_prim, lin_ultim cu 1. Se citesc E_INFO_INTENSIV_PASCAL_SIII_091 succesiv celelalte numere din fişier contorizandu-se numărul liniei; dacă valoarea citită e mai mare ca max, se modifică max, lin_prim şi lin_ultim, iar dacă este egal cu max se modifică lin_ultim. E_INFO_INTENSIV_C_SIII_092 3b. Se poate folosi un singur apel al subprogramului ordonare, afişând ultimele m, apoi primele m elemente E_INFO_INTENSIV_PASCAL_SIII_092 ale tabloului rezultat. O altă variantă utilizează două apeluri (pentru ordonarea descrescătoare schimbând semnul tuturor elementelor). E_INFO_INTENSIV_C_SIII_092 4. pentru c1=’A’, ’Z’ pentru c2=’A’, ’Z’ E_INFO_INTENSIV_PASCAL_SIII_092 dacă c1 nu e vocală sau c2 nu e vocală, scrie c1 c2 E_INFO_INTENSIV_C_SIII_093 3. pentru i impar Ai=(i+1)/2, pentru i par Ai=n-(n-i)/2 E_INFO_INTENSIV_PASCAL_SIII_093 dcm calculează cel mai mare divizor comun al numerelor E_INFO_INTENSIV_C_SIII_093 4. a şi b. Deoarece orice divizor comun este un divizor ac E_INFO_INTENSIV_PASCAL_SIII_093 celui mai mare divizor comun, se calculează dcm şi apoi se descompune rezultatul în factori primi. Dacă există cel puţin doi factori primi, se afişează produsul acestora. E_INFO_INTENSIV_C_SIII_094 3 Se poate stabili relaţia existentă înte primii doi termeni şi apoi se verifică dacă această relaţie se păstrază între E_INFO_ INTENSIV_PASCAL_SIII_094 oricare doi termeni consecutivi aflaţi pe poziţiile 2,3, ..., n. E_INFO_INTENSIV_C_SIII_094 4 O soluţie corectă, dar ineficientă, parcurge toate numerele mai mari decât n determinând pe primul care E_INFO_ INTENSIV_PASCAL_SIII_094 are exact aceleaşi cifre ca şi n. E_INFO_INTENSIV_C_SIII_095 3 Funcţia implementează algoritmul fundamental de numărare (contorizare), în cazul de faţă numărarea E_INFO_ INTENSIV_PASCAL_SIII_095 valorilor pozitive şi a celor negative dintr-un tablou. E_INFO_INTENSIV_C_SIII_095 4 O soluţie corectă, dar ineficientă ca timp de executare, generează toate tripletele de sumă S şi reţine pe cel în E_INFO_ INTENSIV_PASCAL_SIII_095 care produsul celor trei numere din triplet este maxim. E_INFO_INTENSIV_C_SIII_096 3 a. Se testează dacă lungimea fiecăreia dintre cele trei laturi e strict mai mică decât suma lungimilor celorlalte E_INFO_ INTENSIV_PASCAL_SIII_096 două laturi. b. Se pot ordona laturile fiecărui triunghi pentru a testa congruenţa. E_INFO_INTENSIV_C_SIII_096 4 O soluţie corectă, dar ineficientă ca timp de executare, reţine numerele de pe a doua linie într-un vector, apoi pe E_INFO_ INTENSIV_PASCAL_SIII_096 măsură ce citeşte câte un interval determină câte dintre numerele din vector aparţin intervalului printr-o parcurgerea integrală a vectorului. E_ INFO_INTENSIV _C_SIII_097 3. Se apelează calcul(x-1) şi calcul(y). E_ INFO_INTENSIV _PASCAL_SIII_097 E_INFO_INTENSIV _C_SIII_097 4. Cu punctaj parţial, se poate construi soluţia neoptimă ce analizează toate perechile posibile E_INFO_INTENSIV _PASCAL_SIII_097 (x,y), cu x≤y≤ k ce satisfac relaţia impusă. E_INFO_INTENSIV_C_SIII_098 3. Subprogramul poate determina numărul cerut calculând, succesiv valorile x1,x2, x3... cât timp produsul obţinut nu E_INFO_INTENSIV _PASCAL_SIII_098 este mai mare decât y. E_INFO_INTENSIV _C_SIII_098 4. Un algoritm optim ca timp de executare foloseşte algoritmul de interclasare, care evident are E_INFO_INTENSIV _PASCAL_SIII_098 complexitate liniară. Din fişier sunt preluate doar valorile pare, memorate în doi vectori si interclasati. E_ INFO_INTENSIV _C_SIII_099 3. Subprogramul poate determina numărul cerut ca rest la impărtirea la 10nr-1, unde nr este numărul de cifre al lui k. E_ INFO_INTENSIV _PASCAL_SIII_099 E_INFO_INTENSIV _C_SIII_099 4. Se traversează valorile din fişier şi cu fiecare element se incearcă fie incrementarea lungimi E_INFO_INTENSIV _PASCAL_SIII_099 secvenţei curente, dacă valoarea are paritate diferită faţă de cea citită anterior, fie iniţializarea unei noi secvenţe. E_INFO_INTENSIV_C_SIII_100 3 Subprogramul poate determina numărul cerut parcurgând toţi divizorii posibili ai celor trei numere şi E_INFO_INTENSIV_PASCAL_SIII_100 contorizându-i pe cei care respectă condiţia impusă. E_INFO_INTENSIV_C_SIII_100 4. O rezolvare de punctaj maxim implică un anumit grad de creativitate din partea concurentului. Un E_INFO_INTENSIV_PASCAL_SIII_100 punctaj parţial se poate obţine cu o soluţie care generează numerele într-un vector, până ce se obţine numărul din fişier.