| |

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]. 16

#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:

  • Inițializăm o variabilă base cu 1 și o variabilă result cu 0.
  • Parcurgem cifrele numărului, începând cu cifra cea mai semnificativă:
    • Adunăm la result produsul dintre cifra curentă și base.
    • Înmulțim base cu k.
  • La final, valoarea lui result este reprezentarea numărului în baza 10.

Î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.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *