Salut! O intrebare destul de grea da sper sa stie cineva. Se da un numar n natural , sa se determine cel mai apropiat numar palindrom format cu numar minim de pasi (nr de cifre) ,daca nu ati inteles poate intelegeti din exemplu : n=1741 , raspuns 1771 deoarece se aduna 3 la 4 si devine 1771 si acesta este numarul minim de pasi ,alt exemplu : n=1332 ,raspuns 2332 deoarece numarul minim de pasi este 1 si se aduna 1 la 2 ,deasemenea sa se afle pentru numarul n cati pasi s au folosit : ex: n=1741 : rezultat=1771 nr_pasi=3
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
using namespace std;
int main()
{
unsigned numar;
cout << "n="; cin >> numar;
unsigned char cifre[30];
unsigned numarCifre = 0, numarPasi = 0;
while (numar > 0) {
cifre[numarCifre++] = numar % 10;
numar /= 10;
}
// cifrele din tablou sunt in ordine inversa, dar nu ne afecteaza
for (int i = 0, j = numarCifre - 1; i < j; i++, j--)
if (cifre[i] != cifre[j]) {
unsigned diferenta = 0;
if (cifre[i] > cifre[j]) {
diferenta = cifre[i] - cifre[j];
cifre[j] += diferenta;
}
else {
diferenta = cifre[j] - cifre[i];
cifre[i] += diferenta;
}
numarPasi += diferenta;
}
numar = 0;
// cifre -> numar
for (int i = 0; i < numarCifre; i++)
numar = numar * 10 + cifre[i];
cout << "rezultat: " << numar << endl;
cout << "Numar pasi: " << numarPasi << endl;
return 0;
}
using namespace std;
int main()
{
unsigned numar;
cout << "n="; cin >> numar;
unsigned char cifre[30];
unsigned numarCifre = 0, numarPasi = 0;
while (numar > 0) {
cifre[numarCifre++] = numar % 10;
numar /= 10;
}
// cifrele din tablou sunt in ordine inversa, dar nu ne afecteaza
for (int i = 0, j = numarCifre - 1; i < j; i++, j--)
if (cifre[i] != cifre[j]) {
unsigned diferenta = 0;
if (cifre[i] > cifre[j]) {
diferenta = cifre[i] - cifre[j];
cifre[j] += diferenta;
}
else {
diferenta = cifre[j] - cifre[i];
cifre[i] += diferenta;
}
numarPasi += diferenta;
}
numar = 0;
// cifre -> numar
for (int i = 0; i < numarCifre; i++)
numar = numar * 10 + cifre[i];
cout << "rezultat: " << numar << endl;
cout << "Numar pasi: " << numarPasi << endl;
return 0;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă