Sunteți pe pagina 1din 14

1.

Cerință
RSD-ul a două numere este restul împărțirii sumei la diferența lor. Învățătoarea le-a dat elevilor
un test unde aveau de efectuat mai multe calcule de acest gen, iar acum are nevoie de un
"calculator" pentru a putea verifica mai ușor rezultatele obținute de elevi. O puteți ajuta?
Date de intrare
Se citesc cele două numere, A și B.
Date de ieșire
Programul va afișa RSD-ul celor două numere.

#include <iostream>
using namespace std;

int main(){
int A, B;
cin >> A >> B;
cout << ((A+B)%(A-B));
return 0;
}

2. Cerință
Trei colegi de serviciu au primit fiecare câte un număr de task-uri de la șeful lor de echipă și vor
să și le împartă în mod egal. Găsește un mod de a le redistribui.
Există cazuri în care nu există o metodă de a atribui toate task-urile celor 3 angajați astfel încât
fiecare să aibă, la final, același număr de task-uri. În acest caz, se va găsi o metodă de a elimina
un număr minim de task-uri din cele inițiale astfel încât cele rămase să poată fi redistribuite în
mod egal.
Date de intrare
Se vor citi de la tastatură 3 numere a,b și c, care reprezintă numărul de task-uri atribuite inițial
primului coleg, celui de-al doilea, respectiv celui de-al treilea.
Date de ieșire
Programul va afișa pe ecran numărul X, care reprezintă numărul de task-uri pe care îl are fiecare
coleg după împărțirea lor în mod egal, conform cerinței.
Restricții și precizări: 0 ≤ a, b, c ≤100
#include <iostream>
using namespace std;

int main(){
int a, b, c; // numărul de task-uri atribuite inițial primului coleg, celui de-al doilea, respectiv celui de-al
treilea coleg
cin >> a >> b >> c;
cout << (a+b+c)/3;
return 0;
}
3. Cerință
Un alergător profesionist se pregătește pentru o competiție în felul următor: dacă astăzi a
alergat X kilometri, mâine va alerga
X + rkilometri.
Se știe că astăzi a alergat a kilometri. Câți kilometri va alerga mâine? Dar peste două zile?
Date de intrare
Se dau două numere a și r, având semnificațiile din enunț.
Date de ieșire
Cele două valori cerute se vor afișa pe aceași linie, separate printr-un spațiu.

#include <iostream>
using namespace std;

int main(){
int a, r; // dacă astăzi a alergat x kilometri, mâine va alerga x + r kilometri
cin >> a >> r;
cout << a+r << " " << (a+r)+r;
return 0;
}

4. Alexandru este elev in clasa a IX-a. Acesta tocmai a învățat la ora de matematică despre
progresiile aritmetice și vrea să se folosească de abilitățile sale de programator pentru a-și
face automat tema. În problema de la temă, i se dau două numere consecutive aflate in
progresie aritmetică, iar acesta trebuie să afle următorii trei termeni ai progresiei. 3
numere întregi a, b și c sunt termeni consecutivi ai unei progresii aritmetice dacă
diferența dintre a și b e egală cu diferența dintre b și c.
Date de intrare
Se citesc de la tastatură numerele a și b, reprezentând cele 2 numere consecutive aflate in
progresie aritmetică.
Date de ieșire
Se vor afișa pe ecran următorii 3 termeni ai progresiei aritmetice respective.
Restricții și precizări
 Se va avea în vedere că a și b sunt numere întregi.
 -1000 < a, b < 1000

5. După ce a devenit foarte popular, Mark a primit în total A cadouri de la fanii săi. Acum
vrea să se mute într-o casă mai mare și trebuie să pună toate cadourile în cutii pentru a se
putea muta. Pentru că e ordonat, Mark vrea să pună în fiecare cutie exact B cadouri.
Putem să ne imaginăm că Mark poate să facă rost de oricâte cutii oricât de mari.
Spuneți dacă Mark poate să își mute cadourile respectând condiția din enunț.
Date de intrare
Se citesc de la tastatură cele două numere A și B.
Date de ieșire
Programul va afișa pe ecran posibil dacă e posibil ca Mark să se mute respectând condiția
sau imposibil în caz contrar.
Restricții și precizări
Numerele sunt strict pozitive și se încadrează în tipul de date int.
Exemplu
Date de intrare Date de ieșire
6 3 posibil
6 4 imposibil

#include <iostream>
using namespace std;

int main() {
int A, B;
cin >> A >> B;
if (A%B==0){
cout << "Posibil";
}
if ( A%B!=0){
cout << "Imposibil";
}

return 0;
}

6. Cerință
Se dau 3 numere naturale, a, b și c, care respectă condiția a < b < c. Sarcina ta este să determini
dacă tripletul (a, b, c) respectă următoarea condiţie: a2 + b2 = c2.
Date de intrare
De la tastatură se vor citi cele trei numere naturale a,b,c.
Date de ieşire
Pe ecran se va afişa DA, în cazul în care cele trei numere respectă condiţia dată, sau NU, în caz
contrar.
Restricţii şi precizări :1 ≤ a < b < c ≤ 1000
#include <iostream>
using namespace std;

int main() {
int a, b, c;
cin >> a >> b >> c;
if (a*a+b*b==c*c){
cout << "DA";
}
if ( a*a+b*b!=c*c){
cout << "NU";
}

return 0;
}

7. Se dă un număr pozitiv N. Să se afișeze fizz dacă acesta este divizibil cu 2, buzz, dacă


este divizibil cu 3 sau fizzbuzz, dacă este divizibil și cu 2 și cu 3.
Date de intrare
Se citește la tastatură numărul N.
Date de ieșire
Programul va afișa pe ecran cuvintele cerute.
Restricții
0 < N < 10000

#include <iostream>
using namespace std;

int main() {
int N;
cin >> N;
if (N%2==0){
cout << "fizz";
}
if (N%3==0){
cout << "buzz";
}

return 0;
}

8. Se dau două numere A și B. Se cere să se afișeze cel mai mare dintre ele.
Date de intrare
Se citesc de la tastatură două numere, reprezentând valorile A, respectiv B.
Date de ieșire
Programul va afișa pe ecran maximul celor 2 numere.
Restricții
Numerele se încadrează in tipul de date int.

#include <iostream>
using namespace std;
int main() {
int A, B;
cin>> A>>B;
if (A>B){
cout<< A;
}else {
cout<< B;
}
return 0;
}

9. Se dau două numere întregi A și B. Să se afișeze în ordine crescătoare.


Date de intrare
Se citesc de la tastatură cele două numere.
Date de ieșire
Programul va afișa pe ecran numerele ordonate crescător, separate prin spații.
Restricții și precizări
Numerele se încadrează în tipul de date int.

#include <iostream>

using namespace std;

int main() {
int A, B;
cin>> A>>B; // Sa se afiseze doua numere crescator
if (A<B){
cout<< A<<" "<<B;
}else {
cout<< B<<" "<<A;
}
return 0;
}

10. Se dau 3 numere întregi A, B și C, nu neapărat distincte. Să se afișeze în ordine


crescatoare.
Date de intrare
Se citesc de la tastatură cele trei numere.
Date de ieșire
Programul va afișa pe ecran numerele ordonate crescător, separate prin spații.
Restricții
Numerele se încadrează in tipul de date int.
#include <iostream>

using namespace std;

int main() {
int A, B, C;
cin >> A >> B >> C;
if (A ==A){
if((B > A) && (C >=B)) {
cout << A << " " << B << " " << C;
}
else if ((C >= A) && (B > C)) {
cout << A << " " << C << " " << B;
}
}
if (B == B) {
if((A >= B) && (C > A)) {
cout << B << " " << A << " " << C;
}
else if ((C >= B) && (A >= B)) {
cout << B << " " << C << " " << A;
}
}
if (C == C) {
if((A >C) && (B >= A)){
cout << C << " " << A << " " << B;
}
else if ((B > C) && (A > B)){
cout << C << " " << B << " " << A;
}

return 0;
}

Cerință

11. Se dau veniturile unei companii în săptămâna precedentă și în cea actuală. Să se afle dacă
veniturile au crescut, scăzut sau dacă au rămas la fel.

Date de intrare

Se dau două numere: primul reprezintă venitul săptămânii precedente, iar al doilea al săptămânii
curente.
Date de ieșire

Programul va afișa unul dintre mesajele CRESCUT, SCAZUT sau CONSTANT.

Restricții

 numerele citite vor fi numere naturale cuprinse între 0 și 1000.

#include <iostream>

using namespace std;

int main() { // Sa se compare doua venituri, sa se afiseze daca au crescut, scazut sau au
ramas constante

int A, B; // A- venit saptamana precedenta si B- venit saptamana actuala

cin >> A >> B;

if (A < B){

cout << "CRESCUT";

if (B < A) {

cout<< "SCAZUT";

if (A == B) {

cout << "CONSTANT ";

return 0;

12.Cerință
Axa numerelor reale conține toate numerele negative și pozitive, aranjate în ordine crescătoare
de la stânga la dreapta. Ți se dă o valoare întreagă x. Scrie un program care să afișeze distanța
dintre punctul de coordonată x și origine (punctul de coordonată 0).

Axa numerelor:

03-512-1-2-3-4

Această distanță dintre un număr dat și 0 poartă denumirea de modul.

Această noțiune este foarte utilă atunci când vrem să calculăm distanțe dintre diverse puncte și
este foarte folosită în jocurile video.

Date de intrare

Se citește o singură valoare, x.

Date de ieșire

Se va afișa distanța dintre punctul de coordonată x și punctul de coordonată 0.

#include <iostream>

using namespace std;

int main() { // program care să afișeze distanța dintre punctul de coordonată x și origine de pe
axa numerelor

int x;

cin >> x;

if (x > 0){

cout << x+0;

if (x <= 0) {

cout<< (x-x)-x;

}
return 0;

13.Cerință

Două boxe se pot conecta între ele dacă sunt modele diferite. Dându-se 3 numere
naturale, A , B și C, reprezentând modelele a 3 boxe, să se verifice dacă se pot conecta măcar doua
boxe între ele.

Date de intrare

Programul va citi cele 3 numere.

Date de ieșire

Programul va afișa mesajul DA dacă există cel puțin două boxe ce se pot conecta între ele,
respectiv NU în caz contrar.

#include <iostream>

using namespace std;

int main() { // Două boxe se pot conecta între ele dacă sunt modele diferite

int A, B, C; //Se dau 3 nr natur., A , B și C (modelele a 3 boxe ), verifica dacă se pot conecta
măcar doua boxe între ele.

cin >> A >> B >> C;

if((A == C) && (A != B)) {

cout << "DA";

if((A == B) && (A != C)) {

cout <<"DA";
}

if((B == C) && (B != A)) {

cout << "DA";

if ((A == C) && (A == B)) {

cout<< "NU";

if ((A != C) && (A != B) && (B != C)) {

cout<< "DA";

return 0;

14.Cerință

Ești în perioada de testare la o firmă de software unde ai început să lucrezi acum câteva luni. Ai
primit ca și task să faci un program care să verifice dacă un șir format din 4 numere întregi este
monoton crescător sau descrescător. Poți să îl rezolvi?

Date de intrare

Programul citește cele 4 elemente ale șirului.

Date de ieșire

Programul afișează mesajul Crescator, dacă șirul este monoton crescător, Descrescator dacă


este monoton descrescător sau Nemonoton în caz contrar.

Restricții

 Elementele șirului sunt numere întregi cuprinse între -100 și 100.


 Pentru simplitate, dacă un șir este constant (adică are toți termenii egali) îl vom considera
nemonoton.

#include <iostream>

using namespace std;

int main() {

int A, B, C, D;

cin >> A >> B >> C >> D;

if(((A <= B) && (B <= C) && (C < D))||((A <= B) && (B < C) && (C <= D))) {

cout << "Crescator";

else if(((D <= C) && (C <= B) && (B < A))||((D <= C) && (C < B) && (B <= A))) {

cout << "Descrescator";

else {

cout<< "Nemonoton";

15. Cerință

Se dau patru numere întregi a, b, c și d. Să se verifice dacă numerele se află într-o progresie
geometrică.

Explicații
Raportul dintre două numere a și b este valoarea împărțirii lui a la b.

Progresia geometrică este un șir de numere cu proprietatea că raportul dintre oricare doi


termeni consecutivi este constant (adică valoarea este tot timpul aceeași).

Această valoare constantă se numește rație.


Faptul că știm că un șir de numere se află în progresie geometrică este folositor deoarece putem
afla foarte ușor elemente ca și rația, suma termenilor și termenul general, ceea ce simplifică
rezolvarea problemelor care au la bază această temă.

Exemplu din viața de zi cu zi


Un exemplu din viața de zi cu zi de progresie geometrică este suma de bani aflată în contul
bancar în fiecare lună. De exemplu dacă ai avea dobândă de 1% în fiecare lună și inițial 100 lei
în cont, prima lună ai avea 100 lei în cont, în a doua ai avea 101, în a treia 102.01 și așa mai
departe...

Știind că dobânda lunară este de 1% (deci având o progresie geometrică), putem calcula foarte
ușor câți bani vom avea în cont după 10 ani (dacă nu ne-am atinge de ei).

Vezi aici alte exemple de aplicații ale progresiilor geometrice.

Date de intrare

Se citesc de la tastatură numerele a, b, c și d.

Date de ieșire

Programul va afișa ca și date de ieșire DA, dacă cele patru numere se află într-o progresie
geometrică și NU, dacă cele patru numere nu îndeplinesc condiția.

Restricții și precizări

 -200 < a, b, c, d < 1000


 Se garantează că raportul dintre un număr si cel de dinaintea lui (în caz că acest număr există)
este un număr întreg nenul (adică diferit de 0).

Date de intrare
2 4 -8 16 NU

3 9 27 81 DA

#include <iostream>
using namespace std;

int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
if ((a != 0) && (b !=0) && (a!=b) )
{
if ((a != 1) && (b !=1) )
{
if( ((b/a) == (c/b)) &&((c/b) == (d/c)) && (b%a == 0) && (c%b == 0) && (d%c == 0) )
{
cout << "DA";
}
else
{
cout<<"NU";
}
}
else
{cout<<"NU";
}
}
else
{
cout<<"NU";
}

return 0;
}

16. Se dă un număr pozitiv X. Să se afișeze inversul (sau oglinditul) acestui număr.


Inversul unui număr se obține luând cifrele numărului de la dreapta la stânga. De exemplu,
pentru numărul  1234 se va afișa  4321.
Date de intrare
Se citește la tastatură numărul X.
Date de ieșire
Programul va afișa pe ecran oglinditul lui X.
Restricții

 0 < X < 1.000.000.000


 Se garantează că X nu are ultima cifră 0.
Exemplu
Date de intrare
7612 2167
#include <iostream>
using namespace std;

int main() {
int X, inversul, rest;
inversul = 0;
cin >> X;

while(X != 0) {
rest = X%10;
inversul = inversul*10 + rest;
X /= 10;
}

cout << inversul;

return 0;
}

17. Dându-se un număr natural a, să se verifice dacă a și inversul (oglinditul) lui a sunt ambele
numere prime.
Date de intrare
Se citește de la tastatură numărul natural a.
Date de ieșire
Să se afișeze DA dacă numărul a și inversul său sunt ambele prime sau NU, în caz contrar.
Restricții și precizări
 1 ≤ a < 300000
 a nu are ultima cifră 0
Exemplu
Date de intrare Date de ieșire
5 DA
122 NU

S-ar putea să vă placă și