Cristian, elev în clasa a V-a, a primit o cutie cu N bomboane. Chiar dacă i-ar plăcea, știe că nu este indicat să le mănânce pe toate imediat. L-a întrebat pe tatăl său câte bomboane are voie să mănânce și acesta i-a răspuns că poate mânca doar un număr sănătos de bomboane. Cristian a fost nedumerit. Tatăl i-a explicat că un număr sănătos este un număr natural care poate fi modificat, până se obține o singură cifră, prin eliminarea celei mai mici cifre din el și înlocuirea fiecărei cifre rămase în număr cu diferența dintre valoarea ei și cifra minimă. De exemplu, cifra minimă a numărului 3151 este 1 iar prin eliminarea ei din număr se obține 35, după care prin înlocuirea cifrelor rămase se obține 24 adică cifra 3 se înlocuiește cu cifra 2, cifra 5 cu 4, rezultând numărul 24; se continuă procedeul: cifra minimă a numărului 24 este 2 iar prin eliminarea ei din număr se obține 4, după care prin înlocuirea cifrei rămase se obține 2 moment în care a rămas o singură cifră. Așadar numărul sănătos obținut din 3151 este 2. Ajutați-l pe Cristian să afle câte bomboane are voie să mănânce.
rossetta:
Cerinta nu este completa deoarece lipsesc restrictiile ( n maxim). Am gasit problema pe : https://www.pbinfo.ro/?pagina=probleme&id=1984 . Aceasta este problema pe care trebuie sa o rezolvi ?
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
using namespace std;
int main() {
int n, nr = 0;
cin >> n;
if(n <= 9)
cout << n << endl << n << endl;
while ( n > 9) {
int p = 1;
int min = 9, nn = n;
while(nn > 0) {
if(nn % 10 < min)
min = n % 10;
nn /= 10;
}
nn = n;
int m = 0;
while(nn > 0) {
if(nn % 10 != min) {
m = m + nn % 10 * p;
p = p * 10;
}
nn /= 10;
}
p = 1;
while(m > 0){
nn = nn + (abs)(m % 10 - min) * p;
p *= 10;
m /= 10;
}
nr++;
if(nr == 1)
cout << min << endl << nn << endl;
n = nn;
}
cout << n;
return 0;
}
De fisiere trebuie sa te ocupi tu.
using namespace std;
int main() {
int n, nr = 0;
cin >> n;
if(n <= 9)
cout << n << endl << n << endl;
while ( n > 9) {
int p = 1;
int min = 9, nn = n;
while(nn > 0) {
if(nn % 10 < min)
min = n % 10;
nn /= 10;
}
nn = n;
int m = 0;
while(nn > 0) {
if(nn % 10 != min) {
m = m + nn % 10 * p;
p = p * 10;
}
nn /= 10;
}
p = 1;
while(m > 0){
nn = nn + (abs)(m % 10 - min) * p;
p *= 10;
m /= 10;
}
nr++;
if(nr == 1)
cout << min << endl << nn << endl;
n = nn;
}
cout << n;
return 0;
}
De fisiere trebuie sa te ocupi tu.
Alte întrebări interesante
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă
Biologie,
9 ani în urmă
Matematică,
9 ani în urmă
Limba rusă,
9 ani în urmă
Limba română,
9 ani în urmă