Plan Lectie II - Probleme
Plan Lectie II - Probleme
Medii:
#364:
Se dau n numere naturale. Determinati numarul pentru care prima cifra este
maxima.
#include <iostream>
using namespace std;
int main() {
int n, nr, nrMax = 0, cfrMax = 0;
cin >> n;
while (nr / 10 != 0) {
nr = nr / 10; // ramane prima cifra
}
#665
Se dau doua numere naturale a b. Determinati cate numere naturale din intervalul [a,
b] se divid cu toate cifrele lor nenule.
#include <iostream>
using namespace std;
int main() {
int a, b, c = 0;
cin >> a >> b;
while (numar != 0) {
if (numar % 10 != 0)
if (i % (numar % 10) != 0)
ok = 0;
numar = numar / 10;
}
if (ok == 1)
c++;
}
cout << c;
}
#464
Se citește o cifră k și apoi se citesc numere până la apariția lui 0. Să se
determine de câte ori apare cifra k în numerele citite care sunt pare.
#include <iostream>
int main() {
int k, nr, c = 0;
cin >> k;
cin >> nr;
while (nr != 0) {
if (nr % 2 == 0) {
while ( nr != 0) {
if (nr % 10 == k)
c++;
nr = nr / 10;
}
}
cout << c;
}
Usoare:
#370
Se dau doua numere naturale k si n si apoi n numere naturale. Calculati suma celor
care au suma cifrelor divizibila cu k.
#include <iostream>
int main() {
int k, n, numar, copieNr, sumaCf, s = 0;
cin >> k >> n;
while (numar != 0) {
sumaCf += numar % 10;
numar /= 10;
}
if (sumaCf % k == 0)
s += copieNr;
}
cout << s;
}
#2662
Se dau n numere naturale. Se construieste o valoare selectand de la fiecare numar
cifra maxima. Determinati patratul acestei valori.
#include <iostream>
int main() {
long long int n, numar, nrNou = 0;
cin >> n;
while (numar != 0) {
if (numar % 10 >= cfMaxima)
cfMaxima = numar % 10;
numar /= 10;
}
#1613
Se citește un număr natural nenul n. Numărul n1 este format doar din cifrele
pare ale lui n. Numărul n2este format doar din cifrele impare ale lui n. Calculați
valoarea absolută a diferenței lor.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long n, n1 = 0, n2 = 0, d, inv1 = 0, inv2 = 0;
cin >> n;
while (n != 0) {
if (n % 2 == 0)
inv1 = inv1 * 10 + n % 10;
if (n % 2 == 1)
inv2 = inv2 * 10 + n % 10;
n = n / 10;
}
while (inv1 != 0) {
n1 = n1 * 10 + inv1 % 10;
inv1 = inv1 / 10;
}
while (inv2 != 0) {
n2 = n2 * 10 + inv2 % 10;
inv2 = inv2 / 10;
}
d = n1 - n2;
if (d < 0)
cout << (-1) * d;
else
cout << d;
}
#280
Se dau mai multe numere naturale. Determinaţi cel mai mare număr palindrom
aflat printre numerele date şi de câte ori apare.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int numar, P = 0, C = 0, invers, copieNr;
cin >> numar;
while (numar != 0) {
invers = 0;
copieNr = numar;
while (copieNr != 0) {
invers = invers * 10 + copieNr % 10;
copieNr = copieNr / 10;
}
if (invers == numar) {
if (numar == P)
C++;
if (numar > P) {
P = numar;
C = 1;
}
}
if (P == 0)
cout << "NU EXISTA";
else
cout << P << " " << C;
}