2019 - model
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2019 - iarnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2019 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2019 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2019 - vară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2019 - toamnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2020 - model
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2020 - iarnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2020 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2020 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2020 - vară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2020 - toamnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2021 - model
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2021 - iarnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2021 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2021 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2021 - vară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2021 - toamnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2022 - model
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.txt"); int x; int pr[9], ul[9]; // secvență par-încadrată int l, lmax; // calcul lungime maximă int i; int main() { while (fin >> x) { i++; if ( x%2 == 0 ) { if ( !pr[x] ) pr[x] = i; else ul[x] = i; } } for(i=0; i<=8; i=i+2) { l = ul[i] - pr[i] + 1; if (lmax < l) lmax=l; } cout << lmax << '\n'; for(i=0; i<=8; i=i+2) if ( ul[i] - pr[i] + 1 == lmax ) cout << i << ' '; return 0; }
2022 - iarnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2022 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ofstream fout("bac.txt"); int main() { // 45 = 3 * 3 * 5 int n; int nr3 = 0; int nr5 = 0; cin >> n; // numărul de apariții ale lui 3 în descompunerea în factori primi a lui n! for(int i = 3; i <= n; i+=3) { int k = i; while (k % 3 == 0) { nr3++; k/=3; } } // numărul de apariții ale lui 5 în descompunerea în factori primi a lui n! for(int i = 5; i <= n; i+=5) { int k = i; while (k % 5 == 0) { nr5++; k/=5; } } nr3 /= 2; if (nr3 <= nr5) fout << nr3; else fout << nr5; return 0; }
2022 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2022 - vară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2022 - toamnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2023 - model
Subiectul III, ex 1
int DoiTrei(int n) { do { if (n%10!=2 && n%10!=3) return 0; n/=10; } while(n); return 1; }
Subiectul III, ex 2
#include <iostream> using namespace std; int a[102][102], i, j, n, g; int main() { cin >> n; /* 0 - topogan, 1 - leagăn, 2 - balansoar, 3 - carusel */ for(i=1; i<=n; i++) for(j=1; j<=n; j++) cin >> a[i][j]; // bordarea suprafeței locului de joacă cu „spațiu verde”, 4 for(i=0; i<=n+1; i++) a[i][0] = a[i][n+1] = 4; for(j=0; j<=n+1; j++) a[0][j] = a[n+1][j] = 4; for(i=1; i<=n; i++) for(j=1; j<=n; j++) if (a[i][j]==3) // carusel if (a[i+1][j]!=0 && a[i-1][j]!=0 && a[i][j+1]!=0 && a[i][j-1]!=0) // niciun topogan împrejur { g = 1; cout << i << ' '; } if (!g) cout << "nu exista"; return 0; }
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.txt"); int n, x, y, i; int xMinP = 1000002; // cel mai mic număr par int xMinI = 1000001; // cel mai mic număr impar int yMaxP = -2; // cel mai mare număr par int yMaxI = -1; // cel mai mare număr impar int main() { fin >> n; // orice x, dintre primii n termeni ai șirului for(i=1; i<=n; i++) { fin >> x; if (x%2==0 && x<xMinP) xMinP=x; if (x%2==1 && x<xMinI) xMinI=x; } // orice y, dintre ultimii n termeni ai șirului for(i=1; i<=n; i++) { fin >> y; if (y%2==0 && y>yMaxP) yMaxP=y; if (y%2==1 && y>yMaxI) yMaxI=y; } if (xMinP > yMaxI && xMinI > yMaxP) cout << "DA"; else cout << "NU"; return 0; }
2023 - iarnă
Subiectul III, ex 1
void ecran(int n) // steluțe { char s[7], l[16]=""; int jm, ps; // transform numărul n în șir de caractere itoa(n, s, 10); // construiesc primul rând strcat(l, s); strcat(l, "*"); strcat(l, s); // steluța de la jumătate jm = strlen(l)/2; // pasul (sau rândul) ps = 1; while (l[0]!='*') { cout << l << endl; // plasez steluțe l[jm-ps] = '*'; l[jm+ps] = '*'; // trec la următorul pas/rând ps++; } // rândul doar cu steluțe cout << l; }
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2023 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
#include <iostream> #include <cstring> using namespace std; char s[101]; // denumirea științifică a unei păsări char t[101]; // denumirea științifică ce păstrează doar primele trei litere char *p; // formarea entităților int main() { cin.getline(s,101); p = strtok(s," "); while (p) { if (p[strlen(p)-1]=='.') { if (p[0]=='F') strcat(t,"fam."); if (p[0]=='G') strcat(t,"gen."); if (p[0]=='S') strcat(t,"spe."); } else strcat(t,p); strcat(t," "); p=strtok(NULL, " "); } cout << t; return 0; }
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.txt"); int main () { int tC = -1; // temperatura curentă int tM = -1; // temperatura cea mai mare int tA = -1; // temperatura anterioară int pasR= 0; // pasul reprezentativ while (fin >> tC) { pasR++; if ( tM <= tC ) if ( tA != tC ) { tM = tC; cout << pasR << ' '; } tA = tC; } return 0; }
2023 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2023 - vară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.txt"); int x, i; int Vprf[100]; // vector de frecvență ce memorează numărul de apariții ale prefixului int Vsuf[100]; // vector de frecvență ce memorează numărul de apariții ale sufixului int nrV; // numărul valorilor de două cifre int main() { while (fin >> x) { if (100<=x && x<=999) // x are 3 cifre { Vprf[x/10]++; Vsuf[x%100]++; } if (1000<=x && x<=9999) // x are 4 cifre { Vprf[x/100]++; Vsuf[x%100]++; } } for(i=10; i<=99; i++) if ( Vprf[i]==Vsuf[i] && Vprf[i]!=0 ) nrV++; cout << nrV; return 0; }
2023 - toamnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
#include <iostream> using namespace std; int a[20][20]; int m, n, i, j; int Sp; // suma într-un pătrat de valoare p int Smax = -1; int main() { cin >> m >> n; for(i=0; i<m; i++) for(j=0; j<n; j++) cin >> a[i][j]; for(i=1; i<m; i++) for(j=1; j<n; j++) { Sp = a[i-1][j-1] + a[i-1][j] + a[i][j-1] + a[i][j]; if (Smax < Sp) Smax = Sp; } cout << Smax; return 0; }
Subiectul III, ex 3
-----------------
2024 - model
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
#include <iostream> #include <cstring> using namespace std; int n; int g_mic, g_mare; // găsit char s[101]; char mic[101], mare[101]; char *p; int main() { cin>>n; cin.get(); cin.getline(s, 101); p = strtok(s, " "); while (p) { if ( strlen(p) < n ) // mai puțin de n litere { strcat(mic, p); strcat(mic," "); g_mic=1; } if ( strlen(p) > n ) // mai mult de n litere { strcat(mare, p); strcat(mare," "); g_mare=1; } p=strtok(NULL, " "); } // prima linie să conțină mulțimea cuvintelor care au mai puțin de n litere, // iar a doua linie să conțină mulțimea cuvintelor care au mai mult de n litere. if (g_mic && g_mare) cout << mic << endl << mare; else cout << "nu exista"; // dacă una dintre cele două mulțimi este vidă, // se afișează pe ecran doar mesajul nu exista. return 0; }
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.txt"); int n1, n2, n3; // concurenţii care primesc premiile I, II, III int p1, p2, p3; // preţurile cărţilor alese int x, v[1001], k; int main() { fin >> n1 >> n2 >> n3; while (fin >> x) v[x]++; for(k=1000; k>=10; k--) // intervalul 10..1000 if (v[k] >= n1) { p1 = k; break; } for(k=p1-1; k>=10; k--) if (v[k] >= n2) { p2 = k; break; } for(k=p2-1; k>=10; k--) if (v[k] >= n3) { p3 = k; break; } if (p1 && p2 && p3) cout << p1 << ' ' << p2 << ' ' << p3; else cout << "nu exista"; return 0; }
2024 - iarnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
#include <iostream> #include <cstring> using namespace std; int palindrom(char s[]) { int lung = strlen(s); int i; for(i = 0; i <= lung / 2; i++) if (s[i] != s[lung - i - 1]) return 0; return 1; } int voc(char s[]) { int lung = strlen(s); int vocale = 0; int i; for(i = 0; i < lung; i++) if (strchr("aeiou", s[i])) vocale++; return vocale; } int main() { char sir[256], pal[128][256], *p, t[256]; int n = 0; int i, j; cin.getline(sir, 256); p = strtok(sir, " ,"); while (p) { // formez un vector de „cuvinte de tip palindrom” if (palindrom(p)) { strcpy(pal[n], p); n++; } p = strtok(NULL, " ,"); } for(i = 0; i< n-1; i++) for(j = i + 1; j < n; j++) // ordine descrescătoare după numărul de vocale if (voc(pal[i]) > voc(pal[j])) { strcpy(t, pal[i]); strcpy(pal[i], pal[j]); strcpy(pal[j],t); } else if(voc(pal[i]) == voc(pal[j])) // ordonare lexicografică if (strcmp(pal[i], pal[j]) < 0) { strcpy(t, pal[i]); strcpy(pal[i], pal[j]); strcpy(pal[j], t); } for(i = n - 1; i >= 0; i--) cout << pal[i] << endl; return 0; }
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.txt"); int vf[10]; int n, c, i, NrPerechi; int main () { while (fin>>n) { // cifra de control if(n%9==0) c=9; else c=n%9; // vector de frecvență vf[c]++; } // calcul număr perechi (indiciu: suma Gauss) for(i=1; i<=9; i++) NrPerechi = NrPerechi + vf[i]*(vf[i]-1)/2; cout << NrPerechi; return 0; }
2024 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
#include <iostream> #include <cstring> using namespace std; int n, i, ok; char listaC[50][11]; // lista de cuvinte char s[101]; // șablon char t[101]; // fraza generată pe baza șablonului char *p; int main() { cin >> n; cin.get(); // citesc lista de cuvinte for(i=1; i<=n; i++) { cin >> listaC[i]; cin.get(); } // citesc șablonul cin.getline(s,101); p = strtok(s, " "); while (p) { if (p[0]=='*') // găsesc un cuvânt generic { ok = 0; for(i=1; i<=n; i++) if ( strlen(p) == strlen(listaC[i]) ) // completez cu un cuvânt din lista de cuvinte { strcat(t, listaC[i]); strcat(t, " "); ok = 1; break; } if (ok==0) // completez cu cuvântul generic { strcat(t, p); strcat(t, " "); } } else // completez cu un cuvânt din șablon { strcat(t, p); strcat(t, " "); } p = strtok(NULL, " "); } if ( strchr(t,'*') ) cout << "imposibil"; else cout << t; return 0; }
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ifstream fin("bac.in"); int main() { int vf[1001]={0}; // vector de frecvență pentru [1,1000] int x; // parcurgem numerele din fișier int api=1; int i; while (fin >> x) vf[x]++; for(i = 1; i <= 1000 && api; i++) { if (vf[i]!=0) // dacă există o valoare i care a apărut în șir // numărul de apariții ale fiecărui termen este mai mic sau egal cu acel termen // și are o paritate egală cu a acestuia if ( vf[i]>i || vf[i]%2 != i%2) api = 0; } if (api) cout << "DA"; else cout << "NU"; return 0; }
2024 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
#include <iostream> using namespace std; int main() { int m, n, i, j; int a[51][51]; cin >> m >> n; for(i=1; i<=m; i++) for(j=1; j<=n; j++) { // fiecare element este egal cu cea mai mică valoare generată de // numerele de ordine ale liniei (i), respectiv coloanei (j) pe care se află. if ( i <= 9 && j <= 9 ) // i are o cifră, j are o cifră { if (i < j) a[i][j]=10*i+j; else a[i][j]=10*j+i; } if ( i > 9 && j > 9 ) // i are două cifre, j are două cifre { if (i < j) a[i][j]=100*i+j; else a[i][j]=100*j+i; } if ( i < 10 && j > 9 ) // i are o cifră, j are două cifre { if ( i <= j/10 ) a[i][j]=100*i+j; else a[i][j]=10*j+i; } if ( i > 9 && j < 10 ) // i are două cifre, j are o cifră { if ( i/10 <= j ) a[i][j]=10*i+j; else a[i][j]=100*j+i; } } for(i=1; i<=m; i++, cout << '\n') for(j=1; j<=n; j++) cout << a[i][j] << ' '; return 0; }
Subiectul III, ex 3
-----------------
2024 - vară
Subiectul III, ex 1
int majImp(int a, int b) { int i; // parcurgerea intervalului [a,b] int d; // divizor propriu int sp; // suma divizorilor proprii pari int si; // suma divizorilor proprii impari for(i=a; i<=b; i++) { sp=0, si=0; for(d=2; d<=i/2; d++) if (i%d==0) { if (d%2==0) sp+=d; else si+=d; } if (si>sp) return i; } return 0; }
Subiectul III, ex 2
#include <iostream> #include <cstring> using namespace std; char s[101], *p; int n, ok=1; int main() { cin.getline(s,101); p=strtok(s, " "); n=strlen(p); while (p && ok) { if (strlen(p)!=n) ok=0; p=strtok(NULL, " "); } if (ok) cout << "DA " << n; else cout << "NU"; return 0; }
Subiectul III, ex 3
-----------------
2024 - toamnă
Subiectul III, ex 1
moderat, Varianta I int prim(int x) { int d; if (x<2) return 0; for(d=2; d*d <= x; d++) if (x%d == 0) return 0; return 1; } int moderat(int n) { int nrP; int p1; // primul număr prim int p2; // al doilea număr prim p1 = 2; for(nrP=3; nrP<=n/2; nrP++) if (prim(nrP)) { p2 = nrP; if ( n == p1 * p2 ) return 1; p1 = p2; } return 0; } moderat, Varianta II int moderat(int n) { //folosim un vector care să rețină numerele prime necesare //cum n<=10^5, avem nevoie de cel mult al 65-lea și al 66-lea număr prim (313*317=99221) int v[66]; int nrP, i, j=0, d, nrdiv; for(nrP=2; nrP<=317; nrP++) { nrdiv = 2; // orice număr prim are exact doi divizori for(d=2; d*d<=nrP && nrdiv==2; d++) // căutăm posibili divizori if (nrP%d==0) nrdiv++; if ( nrdiv == 2 ) // nrP este prim, deci îl reținem în vector v[j++]=nrP; } for(i=0; i<j; i++) // verificăm dacă n poate fi scris ca produs de două numere prime consecutive if ( v[i]*v[i+1] == n ) return 1; return 0; }
Subiectul III, ex 2
#include <iostream> using namespace std; int g[101][101]; // grădina int i, m; int j, n; int Fmic; // floarea cea mai mică de pe rând int main() { cin >> m >> n; for(i=0; i < m; i++) for(j=0; j < n; j++) cin >> g[i][j]; for(i=1; i < m; i+=2) // rândul de flori { Fmic = 11; for(j=0; j < n; j++) if (g[i][j] < Fmic) Fmic = g[i][j]; for(j=0; j < n; j++) if (g[i-1][j] >= Fmic) // tunderea gazonului g[i-1][j] = Fmic-1; } for(i=0; i < m; i++, cout << '\n') for(j=0; j < n; j++) cout << g[i][j] << ' '; return 0; }
Subiectul III, ex 3
#include <iostream> #include <fstream> using namespace std; ofstream fout("bac.txt"); // vom afişa şirul obţinut în fişierul bac.txt int main() { int x, y, z; // numerele iniţiale int u; // următorul număr generat cin >> x >> y >> z; fout << z << " " << y << " " << x << " "; // afişăm z, y şi x în fişier în ordinea specificată do { u = (4*y-3*x-z)/2; // calculăm următorul element al şirului fout << u << " "; // îl scriem în fişier // actualizăm valorile pentru a genera următorul termen z=y; y=x; x=u; } while (y!=0); // continuăm până la al doilea 0 return 0; }
2025 - model
Subiectul III, ex 1
void pao(int x, int y, int &rez) { int xn=0; // x nou, doar cu cifre pare nenule int yn=0; // y nou, doar cu cifre pare nenule, oglindit int p; rez=0; p=1; while (x) { if (x%10%2==0 && x%10!=0) { xn = x%10*p + xn; p *= 10; } x=x/10; } while (y) { if (y%10%2==0 && y%10!=0) yn = yn*10 + y%10; y=y/10; } if (xn==yn && xn!=0 && yn!=0) rez=1; }
Subiectul III, ex 2
#include <iostream> using namespace std; int n, k, tb[100][100], i, j; int main() { cin >> k >> n; for(i=0; i<n; i++) tb[i][i] = k*(i+1); for(i=0; i<n; i++) for(j=0; j<n; j++) tb[i][j] = tb[i][i]-(j-i); for(i=0; i<n; i++, cout << '\n') for(j=0; j<n; j++) cout << tb[i][j] << ' '; return 0; }
Subiectul III, ex 3
-----------------
2025 - iarnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2025 - primăvară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2025 - specială
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2025 - vară
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------
2025 - toamnă
Subiectul III, ex 1
-----------------
Subiectul III, ex 2
-----------------
Subiectul III, ex 3
-----------------