Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
11
//g++ 7.4.0 #include <iostream> using namespace std; /*1.Se citește un număr natural nenul, n și se cere să se scrie suma divizorilor pozitivi ai lui n care nu sunt primi. Scrieți, în pseudocod, algoritmul de rezolvare a problemei enunțate. Exemplu: pentru n=12 se scrie 23 (23=1+4+6+12).*/ /*int main() { int n, ok = 0; cin>>n; for(int i = 1; i <= n / 2; i++) { if(n % i == 0) { for(int j = 1; j <= i / 2; j++) { if(i % j == 0) { ok = 1; } } if(ok == 0) { cout<<i<<" "; } } } }*/ /*O persoană poate rezerva mai multe locuri într-o sală de spectacole, dar cel mult câte unul în aceeași jumătate a unui rând. Configurația primului rând al sălii este memorată ca un tablou unidimensional, în care fiecare element corespunde câte unui loc, în ordine de la stânga la dreapta. Locurile libere sunt notate cu 0, iar cele rezervate sunt notate cu numere naturale nenule, astfel încât toate locurile rezervate de o persoană sunt notate cu același număr, iar cele rezervate de persoane distincte sunt notate cu numere distincte. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[2,20]), apoi 2∙n numere naturale din intervalul [0,400], elemente ale tabloului unidimensional reprezentând configurația primului rând al sălii. Programul verifică dacă există persoane care au obținut locuri atât în jumătatea din stânga, cât și în jumătatea din dreapta a acestui rând, și afișează pe ecran numerele cu care sunt notate aceste locuri, ca în exemplu. Numerele sunt afișate într-o ordine oarecare, separate prin câte un spațiu, iar dacă nu există astfel de locuri se afișează pe ecran mesajul nu exista. Exemplu: pentru n=5 și tabloul (7,0,5,0,2,0,2,1,5,3) se afișează pe ecran, nu neapărat în această ordine, numerele 2 5 int main() { int n; cin>>n; int v[2*n]; for(int i = 0; i < n; i++) { cin>>v[i]; } for(int i = 0; i < n; i++) { if(v[i] != 0) { for(int j = n; j < 2 * n; j++) { if(v[i] == v[j]) { cout<<v[i]<<" "; } } } } }*/ /*2.Fișierul bac.in conține un șir de cel mult 106 numere naturale din intervalul [10,109], separate prin câte un spațiu. Se cere să se afișeze pe ecran toate valorile lui z cu proprietatea că în șir se află un număr maxim de termeni cu cifra zecilor egală cu z. Cifrele afișate sunt separate prin câte un spațiu. Proiectați un algoritm eficient din punctul de vedere al timpului de executare. Exemplu: dacă fișierul conține numerele 726 378 98 177 20 49 128 859 679 251 pe ecran se afișează cifrele de mai jos (sunt câte 3 termeni care au cifra zecilor 2, respectiv 7): 2 7 #include <iostream> #include <fstream> using namespace std; int main() { int x, max = 0, a, b; int fr[10] = {0}; ifstream f("bac.in"); while(f>>x) { fr[x/10%10]++; } for(int i = 0; i < 10; i++) { if(fr[i]>max) { max = fr[i]; } if(fr[i] == max) { a = max; b = i; } } cout<<a<<" "<<b; } */ /*1.Se citesc trei numere naturale nenule, a, b, şi c, şi se cere să se afişeze două valori naturale, separate printr-un spatiu, reprezentând cel mai mare divizor comun şi cel mai mic multiplu comun al acestor numere. Exemplu: pentru a=12, b=18 şi c=30 se afişează 6 180 (deoarece a=22·3, b=2·32 , c=2·3·5)*/ /*int main() { int a, b, c, d, m; cin>>a>>b>>c; for(int i = ) }*/ /*ScrieŃi un program C/C++ care citeşte de la tastatură două numere naturale na şi nb (0<na<100, 0<nb<100) şi elementele a două tablouri unidimensionale a şi b cu na, respectiv nb elemente. Tablourile memorează elementele câte unei mulŃimi de numere naturale, fiecare având cel mult patru cifre. Programul afişează pe ecran numărul de elemente aparŃinând intersecŃiei celor două mulŃimi menŃionate. Exemplu: pentru na=4, a=(35,149,72,3798), nb=5, b=(72,151,149,9,623), programul afişează pe ecran valoarea 2. int main() { int na, nb, c = 0; cin>>na>>nb; int a[na], b[nb]; for(int i = 0; i < na; i++) { cin>>a[i]; } for(int i = 0; i < nb; i++) { cin>>b[i]; } for(int i = 0; i < na; i++) { for(int j = 0; j < nb;j++) { if(a[i] == b[j]) { c++; } } } cout<<c; }*/ /*Fişierul BAC.TXT conŃine un şir de cel mult un milion de numere naturale, despărŃite prin câte un spaŃiu, fiecare număr având cel puŃin două cifre şi cel mult 9 cifre. Se citesc numerele din fişier şi se cere ca, utilizând un algoritm eficient din punct de vedere al timpului de executare, să se determine şi să se afişeze pe ecran numărul maxim de termeni ai şirului care au aceeaşi cifră a zecilor. Exemplu: dacă fişierul BAC.TXT conŃine numerele 12 36 265 18 139 19 32 34 112 14 68 #include <iostream> #include <fstream> using namespace std; int main() { int x, max = 0, a; int fr[10] = {0}; ifstream f("bac.in"); while(f>>x) { fr[x/10%10]++; } for(int i = 0; i< 10; i++) { if(fr[i] > max) { max = fr[i]; } } cout<<max; }*/ /*Se citesc două numere naturale nenule a şi P (a<P) şi se cere cea mai mică valoare naturală k (0<k≤a) pentru care produsul tuturor numerelor naturale din intervalul [k,a] este mai mic sau egal cu P. Exemplu: dacă a=7 şi P=230 atunci k=5 (5⋅6⋅7<230<4⋅5⋅6⋅7).*/ /*ScrieŃi un program C/C++ care citeşte de la tastatură un număr natural n (2≤n≤20) şi un şir de n numere naturale, fiecare cu cel mult 4 cifre, dintre care cel puŃin unul este număr par, construieşte în memorie un tablou unidimensional care să conŃină termenii şirului citit şi apoi modifică tabloul, inserând după fiecare termen par al şirului numărul 2011. Programul afişează pe ecran numărul de elemente ale tabloului şi, pe o linie nouă a ecranului, valorile memorate în tablou, separate prin câte un spaŃiu. Exemplu: dacă n=7, iar şirul este 1,4,5,3,82,6,2 atunci pe ecran se afişează 11 1 4 2011 5 3 82 2011 6 2011 2 2011*/ /*int main() { int n, x, a; cin>>n; int v[n]; for(int i = 0; i < n; i++) { cin>>x; v[i] = x; } for(int i = 0; i < n; i++) { if(v[i] % 2 == 0) { a = v[i + 1]; v[i + 1] = 2011; v[i + 2] = a; n++; } } for(int i = 0; i < n; i++) { cout<<v[i]<<" "; } }*/ /*Se citesc de la tastatură două numere naturale s1 şi s2 (0<s1≤18, 0≤s2≤18) şi se cere scrierea în fişierul BAC.TXT, fiecare pe câte o linie, în ordine strict crescătoare, a tuturor numerelor naturale cu exact 4 cifre, pentru care suma primelor două cifre este egală cu s1, iar suma ultimelor două cifre este egală cu s2. Pentru determinarea numerelor indicate se utilizează un algoritm eficient din punct de vedere al timpului de executare. Exemplu: dacă s1=8, iar s2=7, atunci 3525 este unul dintre numerele care respectă proprietatea cerută (3+5=8 şi 2+5=7).*/ /*bool suma1(int n, int a) { int x = n /1000 + n / 100 % 10; if(x == a) { return true; } return false; } bool suma2(int n, int a) { int x = n % 10 + n / 10 % 10; if(x == a) { return true; } return false; } int main() { int s1, s2; cin>>s1>>s2; for(int i = 1000; i < 10000; i++) { if(suma1(i, s1) && suma2(i, s2)) { cout<<i<<" "; } } }*/ /*1.49. Un număr natural nenul se numește p-număr dacă are aceeași paritate cu suma divizorilor săi pozitivi. Exemplu: 10 și 25 sunt p-numere (10 are aceeași paritate cu 18=1+2+5+10, iar 25 are aceeași paritate cu 31=1+5+25). Se citesc trei numere naturale nenule, a, b și k (a≤b), și se cere să se scrie cel de al k-lea p-număr din intervalul [a,b] sau -1, dacă nu există cel puțin k astfel de numere în acest interval. Scrieți în pseudocod algoritmul corespunzător. Exemplu: dacă a=27, b=50 și k=3, atunci se scrie 34.*/ /*bool pNumar(int n) { int s = 0; for(int i = 2; i <= n/2; i++) { if(n % i == 0) { s = s + i; } } if((n % 2 == s % 2) { return true; } return false; } int main() { int a, b, k, c = 0, ok = 0; cin>>a>>b>>k; for(int i = a; i <= b; i++) { if(pNumar(i)) { c++; } if(c == k) { cout<< i<<" "; ok = 1; } } if(ok == 0) { cout<<"-1"; } }*/ /*Două numere distincte se numesc în oglindă dacă fiecare dintre ele se obține prin citirea cifrelor celuilalt de la dreapta la stânga. Exemplu: 127 și 721 sunt în oglindă, iar pentru numerele 100 sau 121 nu există niciun număr cu care să fie în oglindă. Scrieți un program C/C++ care citește de la tastatură un număr natural n (n∈[2,50]), apoi cele n elemente ale unui tablou unidimensional, numere naturale din intervalul [0,104). Programul transformă tabloul în memorie înlocuind fiecare element de trei cifre cu numărul cu care el este în oglindă, dacă acesta există, ca în exemplu. Elementele tabloului obținut sunt afișate pe ecran, separate prin câte un spațiu, iar dacă nu s-a înlocuit niciun element se afișează pe ecran mesajul nu exista. Exemplu: pentru n=9 și tabloul (721,72,6,108,180,1221,121,537,1000), se obține tabloul (127,72,6,801,180,1221,121,735,1000). iar pentru n=4 și tabloul (525,72,6,120), se afișează pe ecran mesajul nu exista. int ogg(int n) { int nr = 0; int cn = n; while(cn) { nr = nr * 10 + cn % 10; cn = cn / 10; } return nr; } int main() { int n, c = 0; cin>>n; int v[n]; for(int i = 0; i < n; i ++) { int cn = v[i]; while(cn) { cn = cn /10; c++; } if(c == 3 && v[i] % 10 != 0) { v[i] == ogg(v[i]); } } for(int i = 0; i < n; i++) { cout<<v[i]<<" "; } } */ /*Fișierul bac.txt conține un șir de cel mult 106 numere naturale din intervalul [1,109], separate prin câte un spațiu. Se cere să se afișeze pe ecran, separate printr-un spațiu, două numere naturale a și b (a<b), astfel încât oricare termen al șirului să aparțină intervalului (a,b), iar valoarea expresiei b-a să fie minimă. Proiectați un algoritm eficient din punctul de vedere al timpului de executare și al spațiului de memorie utilizat. Exemplu: dacă fișierul conține valorile 7 2 40 5 10 15 11 122 350 18 se afișează pe ecran numerele 1 351. #include <iostream> #include <fstream> using namespace std; int main() { int x, max = 0, min = 999999; ifstream f("bac.in"); while(f>>x) { if(x<min) { min = x; } else { max = x; } } cout<<min - 1<<" "<<max; */ /*Se citește un număr natural, n (n≥10), cu cel puțin o cifră impară, și se cere să se scrie valoarea 1 dacă toate cifrele impare ale lui n sunt egale între ele sau valoarea 0 în caz contrar. Scrieți, în pseudocod, algoritmul de rezolvare pentru problema enunțată. Exemplu: dacă n=7727470 sau n=7240 atunci se scrie valoarea 1, iar dacă n=7921470 atunci se scrie valoarea 0. int main() { int n, k = 0; cin>>n; int fr[10] = {0}; while(n) { if(n % 10 % 2 != 0) { fr[n%10]++; } n = n / 10; } for(int i = 0; i < 10; i++) { if(fr[i] > 1 && i % 2 != 0) { k ++; } } if(k > 1) { cout<<"0"; } else if(k == 1) { cout<<"1"; } }*/ /*Scrieţi un program C/C++ care citeşte de la tastatură un număr natural, n (n∈[2,20]), apoi cele n elemente ale unui tablou unidimensional, numere naturale din intervalul [0,102), dintre care cel puțin unul are o singură cifră şi cel puţin unul are două cifre. Programul afișează pe prima linie a ecranului toate elementele tabloului formate din câte o singură cifră, iar pe a doua linie a ecranului celelalte elemente ale tabloului. Numerele de pe aceeași linie a ecranului sunt separate prin câte un spațiu. Exemplu: pentru n=6 și tabloul (3,14,2,1,7,21) se afişează pe ecran, nu neapărat în această ordine: 3 2 1 7 14 21 int main() { int n; cin>>n; int v[n]; for(int i = 0; i < n; i++) { cin>>v[i]; } for(int i = 0; i < n; i++) { if(v[i]/10 == 0) { cout<<v[i]<<" "; } } cout<<endl; for(int i = 0; i <n; i++) { if(v[i] / 10 != 0) { cout<<v[i]<<" "; } } }*/ int main() { int x; cin>>x; }
run
|
edit
|
history
|
help
0
Graph Theory 2
RegexMatch
mur1
hilbert
MovConstrAssign2
PLoshtina na krug
pattern
virtual function
Big O Notation array problem
СПКИ АП КЭП 2