online: 3; azi: 278; total: 50733 Manual clasa a ix a - Algoritmi - Algoritmi pentru conversii intre sisteme de numeratie

Manual clasa a IX a

Algoritmi

Algoritmi pentru conversii intre sisteme de numeratie

Să se afişeze toate numerele reprezentate în baza k, mai mici decât n, care sunt palindrom în baza 10. n şi k se introduc de la tastatură k= [2, 9].
# include < iostream >
int main () {
int n, k;
std :: cout << " Introduceti n: " ;
std ::cin >> n;
std :: cout << " Introduceti k: " ;
std ::cin >> k;
for ( int i = 0 ; i < n; i++) {
// Transformam numarul i din baza k in baza 10
int base = 1 ;
int result = 0 ;
int temp = i;
while ( temp > 0 ) {
result += ( temp % 10 ) * base ;
temp /= 10 ;
base *= k;
}
// Verificam daca numarul este palindrom in baza 10
int copy = result ;
int reverse = 0 ;
while ( copy > 0 ) {
reverse = reverse * 10 + ( copy % 10 );
copy /= 10 ;
}
if ( result == reverse) {
std :: cout << i << " " ;
}
}
return 0 ;
}

Pentru a verifica dacă un număr reprezentat în baza k este palindrom, putem transforma numărul în baza 10 și apoi folosim același algoritm.
Pentru a transforma un număr din baza k în baza 10, putem folosi următorul algoritm:
În continuare, vom combina cele două algoritme pentru a rezolva problema.
Observați că folosim variabila temp pentru a păstra copia numărului original, astfel încât să nu îl distrugem în timpul transformării din baza k în baza 10.