Sunteți pe pagina 1din 18

Informatică –indicatii de rezolvare

Specializarea matematică-informatică intensiv informatica


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.