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;
for (int i = 0; i < n; i++) {
cin >> nr;
int copyOfNr = nr;
while (nr / 10 != 0) {
nr = nr / 10; // ramane prima cifra
}
if (nr > cfrMax) {
cfrMax = nr;
nrMax = copyOfNr;
}
if (nr == cfrMax && copyOfNr > nrMax) {
nrMax = copyOfNr;
}
}
cout << nrMax;
}
#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;
for (int i = a; i <= b; i++) {
int numar = i;
int ok = 1;
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>
using namespace std;
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;
}
}
cin >> nr;
}
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>
using namespace std;
int main() {
int k, n, numar, copieNr, sumaCf, s = 0;
cin >> k >> n;
for ( int i = 0; i < n; i++) {
cin >> numar;
copieNr = numar;
sumaCf = 0;
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>
using namespace std;
int main() {
long long int n, numar, nrNou = 0;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> numar;
int cfMaxima = 0;
while (numar != 0) {
if (numar % 10 >= cfMaxima)
cfMaxima = numar % 10;
numar /= 10;
}
nrNou = nrNou * 10 + cfMaxima;
}
cout << nrNou * nrNou;
}
#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;
}
}
cin >> numar;
}
if (P == 0)
cout << "NU EXISTA";
else
cout << P << " " << C;
}