Enunciado
Um determinado método para encriptar números de 4 dígitos consiste em adicionar 1 em cada dígito do número.
Por exemplo:
O número 1234 ficaria 2345 após a encriptação.
O número 9092 ficaria 0103 após a encriptação.
Entrada
Número a ser encriptado
Saída
Número encriptado
Discutindo o Problema
Como em grande parte dos problemas de computação, este tem como objetivo a resolução de um problema através de regras matemáticas. Como tal neste exercício você deve entender como podemos separar os dígitos de um valor inteiro a fim de manipularmos individualmente cada um deles.
Pra alguém experiente em computação ou matemática este é um problema simples, mas para quem está iniciando pode muito bem ter um entendimento errado e vir a ler o número como uma string a fim de manipular os valores como caracteres por exemplo. Esse tipo de solução com strings por mais que funcione, será um trabalho muito dispendioso e terá muitas linhas de código que seriam desnecessárias.
Portanto para resolvermos esse problema basta entendermos como o computador realiza uma conta de divisão para solucionarmos esse problema.
Um ponto importante a se atentar, é que quando realizamos divisões inteiras em um computador o mesmo não devolverá a resposta utilizando casas decimais, isto é, imagine realizarmos a seguinte divisão:
5/2
Intuitivamente podemos dizer que o resultado é 2.5, entretanto para o computador o resultado é 2 devido ao fato de ser uma divisão inteira.
Mas agora você pode estar se perguntado, o que aconteceu com o restante do valor, evaporou? Bom, a resposta pra isso é bem simples, o resto como o próprio nome já diz se tornou o resto da divisão, e como tal também pode ser recuperado, para isso iremos utilizar os seguintes operadores matemáticos.
5/2 = 2: Para obter a parte inteira da divisão
5%2 = 1: Para obter o resto da divisão
Há uma diferença bem sutil entre os operadores / e %, porém o resultado é totalmente diferente.
Em Python o operador equivalente a divisão inteira é o //, preste atenção nesse detalhe pois caso utilize o operador / como é feito em Java ou em C poderá resultar em um erro de cálculo.
Portanto para resolvermos esse problema devemos fazer o seguinte:
Vamos supor que meu valor de entrada é 1234, usamos o operador % para obter o resto da divisão por 10 que no caso é 4, então salvamos esse valor em alguma variável. Em seguida realizamos a divisão do valor 1234 por 10, obtendo assim o valor 123. Usamos novamente o operador % a fim de obter o resto da divisão por 10 que agora vale 3, e então novamente dividimos o valor original por 10 até o momento em que o resultado seja 0, o que corresponde ao final da operação.
Caso tenha dúvidas observe a imagem acima que ilustra bem essas operações.
Logo, supondo uma entrada fixa de 4 dígitos, podemos solucionar o problema assim como se segue:
Milhar = (num%10000)/1000
Centena = (num%1000)/100
Dezena = (num%100)/10
Unidade = num%10
Código Fonte
Java
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int entrada, milhar, centena, dezena, unidade;
Scanner teclado = new Scanner(System.in);
entrada = teclado.nextInt();
milhar = (entrada%10000)/1000;
centena = (entrada%1000)/100;
dezena = (entrada%100)/10;
unidade = entrada%10;
if(milhar==9){
milhar=0;
}else{
milhar++;
}
if(centena==9){
centena=0;
}else{
centena++;
}
if(dezena==9){
dezena=0;
}else{
dezena++;
}
if(unidade==9){
unidade=0;
}else{
unidade++;
}
System.out.printf("%d%d%d%d\n", milhar, centena, dezena, unidade);
}
}
C/C++
#include <stdio.h>
int main(void) {
int entrada, milhar, centena, dezena, unidade;
scanf("%d", &entrada);
milhar = (entrada%10000)/1000;
centena = (entrada%1000)/100;
dezena = (entrada%100)/10;
unidade = entrada%10;
if(milhar==9){
milhar=0;
}else{
milhar++;
}
if(centena==9){
centena=0;
}else{
centena++;
}
if(dezena==9){
dezena=0;
}else{
dezena++;
}
if(unidade==9){
unidade=0;
}else{
unidade++;
}
printf("%d%d%d%d\n", milhar, centena, dezena, unidade);
return 0;
}
Python
entrada = int(input())
milhar = (entrada%10000)//1000
centena = (entrada%1000)//100
dezena = (entrada%100)//10
unidade = entrada%10
if milhar==9:
milhar=0
else:
milhar += 1
if centena==9:
centena=0;
else:
centena += 1
if dezena==9:
dezena=0
else:
dezena += 1
if unidade==9:
unidade=0
else:
unidade += 1
print('%d%d%d%d' %(milhar, centena, dezena, unidade));
Até o próximo problema!