# lê um valor da entrada n = int(input("Digite um inteiro positivo: ")); baseEntrada = int(input("Digite uma base de representação da entrada: ")); baseSaida = int(input("Digite uma base de representação para a saída: ")); # reinterpreta a entrada a partir da representação decimal para a baseEntrada desejada, # descascando os dígitos decimais da direita (-significativo) para a esquerda (+significativo) # e somando as potências da baseEntrada correspondentes # cria uma cópia da entrada (preserva n) copia = n # gera potencias da base da entrada (para a soma de termos da forma digito*(baseEntrada**k) potenciaEntrada = 1 # inicialização do mecanismo de soma (elemento neutro) soma = 0 # enquanto o número não acabou while copia>0: digito = copia % 10 # extrai dígito mais à direita copia = copia // 10 # guarda os outros dígitos # gera parcela parcela = digito*potenciaEntrada # atualiza soma parcial soma = soma + parcela # constrói próxima potência da baseEntrada potenciaEntrada = potenciaEntrada*baseEntrada # informa ao usuário (em decimal) o número que ele digitou na entrada print("Entrada",n,"em base",baseEntrada,"é igual a",soma) # começa a construir a saída print(soma,"na base",baseSaida,"se escreve como ",end="") # cria uma cópia da entrada reinterpretada copia = soma # gera potencias da base da Saída potenciaSaida = 1 # descasca os dígitos de copia na baseSaida da esquerda (+significativo) para a direita (-significativo) # primeiro encontra a maior potência da baseSaida que cabe naquele número while potenciaSaida*baseSaida<=copia: potenciaSaida = potenciaSaida*baseSaida # gera dígitos da esquerda para a direita while potenciaSaida>0: digito = copia // potenciaSaida copia = copia % potenciaSaida potenciaSaida = potenciaSaida // baseSaida print(digito,end="") # finaliza a saída (newline) print()