Inversão de Número Escreva um programa que dado um número, imprima na tela a sua versão invertida.
- Exemplo: Entrada: 1234 - Saída: 4321
Passo 1
O enunciado pede que, dado um número, o programa imprima a sua versão invertida (os dígitos na ordem contrária). Informações e exemplos fornecidos:
- Entrada: um número (no exemplo dado,
). - Saída esperada: o número com os dígitos invertidos (no exemplo,
).
O que o problema exige concretamente: - Ler um número (assumiremos um número inteiro, positivo, negativo ou zero).
- Imprimir o número formado pelos dígitos invertidos, sem zeros à esquerda (por exemplo, entrada
deve produzir saída ). - Se o número for negativo, a saída deve manter o sinal negativo e inverter apenas os dígitos (por exemplo, entrada
deve produzir ).
Passo 2
Escolha do método: vou usar o método aritmético (extração de dígitos com módulo e divisão inteira). Motivo: é um método que dá entendimento matemático do que significa “inverter dígitos” sem depender de operações de string; é simples, funciona em prova sem apelar para funções prontas e é eficiente. Em resumo, pegamos o último dígito com operação de resto por
, adicionamos esse dígito ao final do número invertido em construção, e cortamos o último dígito do número original dividindo por
(divisão inteira). Repetimos até o número original ficar zerado.
Passo 3
Conceitos básicos usados (explicação didática):
- Resto da divisão por
: para um inteiro , o valor (escrevemos aqui simplesmente "resto por ") dá o último dígito de . Ex.: para , o resto por é . - Divisão inteira por
: para um inteiro , a operação "dividir inteiro por " (em muitas linguagens escrita como ou com truncamento) remove o último dígito. Ex.: para , a divisão inteira por dá . - Construção do número invertido: manter uma variável
(de “reversed”) iniciada em . A cada passo, pegar o último dígito do número restante e atualizar como . Isso “anexa” ao final de .
Variáveis que usaremos:
-
: número original (inteiro lido). -
: valor se ou se . -
: valor absoluto de , isto é . -
: número invertido em construção, inicia em .
Passo 4
Algoritmo (passo a passo em pseudocódigo):
- Ler
. - Definir
se senão . - Definir
. - Definir
. - Enquanto
faça: -
. (pega o último dígito) -
. (anexa o dígito ao final de ) -
. (remove o último dígito de )
-
- No fim, resultado =
. - Imprimir o resultado.
Notas: se, o loop não roda e o resultado será , que é correto.
Passo 5
Exemplo passo a passo com a entrada
(mostrar cada iteração):
- Inicialmente:
. Logo , , . - Iteração 1:
-
. -
. -
.
-
- Iteração 2:
-
. -
. -
.
-
- Iteração 3:
-
. -
. -
.
-
- Iteração 4:
-
. -
. -
.
-
- O loop termina porque
. Resultado final = . Este é o valor que será impresso.
Passo 6
Casos especiais e observações práticas:
- Números com zeros finais: entrada
processo produz (os zeros finais viram zeros iniciais que não se imprimem). - Número zero: entrada
saída . - Números negativos: manter o sinal e inverter apenas os dígitos; ex.: entrada
saída . - Overflow: em linguagens como Python não há problema (inteiros de precisão arbitrária). Em linguagens como C, Java, C# pode haver overflow se o número for muito grande; nesse caso haveria que usar tipos maiores ou tratar overflow explicitamente. Para provas de algoritmo geralmente não é necessário tratar overflow a menos que o enunciado peça.
- Entrada não inteira: o algoritmo mostrado assume entrada inteira. Se for necessário lidar com números decimais (com vírgula/ponto), o problema muda (especificar regra de inversão para parte decimal).
Passo 7
Tradução do algoritmo para um programa mínimo em Python (explicação das linhas):
- Ler a linha com input, converter para inteiro com int().
- Guardar o sinal e trabalhar com o valor absoluto.
- Laço while para extrair dígitos e construir
. - Imprimir o resultado final com o sinal.
Passo 8
Dicas para a prova (rápidas e motivadoras):
- Se estiver sem tempo, a solução por string (converter para string e inverter) é muito rápida de escrever: por exemplo, em Python
s[::-1]inverte a string, cuidando do sinal separadamente. Mas em prova de algoritmos às vezes preferem ver a solução aritmética. - Faça testes simples no papel antes de submeter:
, , , . - Respire: o algoritmo é curto e tem poucos casos especiais. Você já sabe fazer!
Resposta
# Programa que lê um inteiro e imprime sua versão invertida (mantendo sinal)
n = int(input().strip())
sign = 1 if n >= 0 else -1
m = abs(n)
r = 0
while m > 0:
d = m % 10
r = r * 10 + d
m //= 10
print(sign * r)